This repository has been archived by the owner on May 6, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathworkers.tf
87 lines (70 loc) · 2.14 KB
/
workers.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
resource "google_compute_instance" "worker" {
count = "${var.worker_instance_count}"
name = "${terraform.workspace}-worker-${count.index + 1}"
machine_type = "${var.worker_machine_type}"
zone = "${element(var.zones, count.index)}"
tags = ["swarm", "worker"]
boot_disk {
initialize_params {
image = "${var.machine_image}"
size = "${var.worker_disk_size}"
}
}
network_interface {
network = "${google_compute_network.swarm.name}"
access_config {}
}
metadata {
swarm = "worker"
}
service_account {
scopes = ["cloud-platform"]
}
connection {
type = "ssh"
user = "${var.ssh_user}"
}
provisioner "file" {
content = "${data.template_file.docker_conf.rendered}"
destination = "/tmp/docker.conf"
}
provisioner "file" {
source = "${path.module}/scripts/install-docker-ce.sh"
destination = "/tmp/install-docker-ce.sh"
}
# install Docker and join the swarm
provisioner "remote-exec" {
inline = [
"sudo sysctl -w vm.max_map_count=262144",
"sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf",
"sudo mkdir -p /etc/systemd/system/docker.service.d",
"sudo mv /tmp/docker.conf /etc/systemd/system/docker.service.d/docker.conf",
"sudo chmod +x /tmp/install-docker-ce.sh",
"sudo /tmp/install-docker-ce.sh ${var.docker_version}",
"curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh",
"sudo bash install-logging-agent.sh",
"sudo docker swarm join --token ${data.external.swarm_tokens.result.worker} ${google_compute_instance.manager.name}:2377",
]
}
# leave swarm on destroy
provisioner "remote-exec" {
when = "destroy"
inline = [
"sudo docker swarm leave",
]
on_failure = "continue"
}
# remove node on destroy
provisioner "remote-exec" {
when = "destroy"
inline = [
"sudo docker node rm --force ${self.name}",
]
on_failure = "continue"
connection {
type = "ssh"
user = "${var.ssh_user}"
host = "${google_compute_instance.manager.0.network_interface.0.access_config.0.assigned_nat_ip}"
}
}
}