-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkubernetes.tf
53 lines (49 loc) · 1.86 KB
/
kubernetes.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
resource "null_resource" "init_controllers" {
for_each = {
for controllers, values in local.instances : controllers => values.hostname
if values.role == "controller"
}
triggers = {
controller_name = each.key
cluster_name = local.server[each.key].cluster_name
}
provisioner "local-exec" {
command = <<-EOT
multipass exec ${self.triggers.controller_name} -- \
sh -c 'sudo kubeadm init --kubernetes-version=${local.environment.k8s_version}'
multipass exec ${self.triggers.controller_name} -- \
sh -c 'sudo cat $KUBECONFIG' > ./scripts/init/${self.triggers.cluster_name}.yaml
if [ ${local.environment.restore_cluster} != true ] ; then
multipass exec ${self.triggers.controller_name} -- \
sh -c 'sudo kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=${local.environment.k8s_version}'
fi
EOT
interpreter = ["bash", "-c"]
}
provisioner "local-exec" {
when = destroy
command = "rm ./scripts/init/${self.triggers.cluster_name}.yaml"
}
depends_on = [module.multipass]
}
resource "null_resource" "join_workers" {
for_each = {
for workers, values in local.instances : workers => values.hostname
if values.role == "worker" && values.cluster_name == values.cluster_name
}
triggers = {
worker_name = each.key
cluster_name = local.server[each.key].cluster_name
}
provisioner "local-exec" {
command = <<-EOT
multipass exec ${self.triggers.worker_name} -- \
sh -c "echo '$KUBECONFIG' | sudo tee /etc/kubernetes/admin.conf"
multipass exec ${self.triggers.worker_name} -- \
sh -c 'sudo echo $(sudo kubeadm token create --print-join-command) | sudo sh'
EOT
interpreter = ["bash", "-c"]
environment = { KUBECONFIG = file("./scripts/init/${self.triggers.cluster_name}.yaml") }
}
depends_on = [module.multipass, null_resource.init_controllers]
}