-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.tf
87 lines (67 loc) · 2.11 KB
/
main.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
# Configure the Docker provider
provider "docker" {
host = "unix:///var/run/docker.sock"
}
resource "docker_container" "redis-servers" {
image = "${docker_image.redis.latest}"
name = "redis-${format("%02d", count.index+1)}"
count = 8
restart = "always"
volumes {
container_path = "/usr/local/etc/redis"
host_path = "/home/dmportella/_workspaces/terraform/redis-cluster/config/redis"
read_only = false
}
command = ["redis-server", "/usr/local/etc/redis/redis.conf"]
}
resource "docker_image" "redis" {
name = "redis:latest"
}
output "redis_servers" {
value = "${join(",", docker_container.redis-servers.*.ip_address)}"
}
/* commented out so terra doesnt delete everytime i destroy the setup.
resource "docker_image" "redis-clusterer" {
name = "redis-clusterer:latest"
}
*/
resource "null_resource" "wait" {
depends_on = ["docker_container.redis-servers"]
provisioner "local-exec" {
command = "echo 'Sleeping for 5...' && sleep 5"
}
}
resource "docker_container" "redis-clusterer" {
depends_on = ["docker_container.redis-servers"]
image = "redis-clusterer:latest"
name = "redis-setup"
restart = "no"
must_run = false
command = ["create", "--unattended", "--replicas", "1", "${formatlist("%s:6379", docker_container.redis-servers.*.ip_address)}"]
}
resource "docker_container" "haproxy-redis-lb" {
depends_on = ["docker_container.redis-servers"]
image = "haproxy:1.5.18"
name = "haproxy-redis-lb"
restart = "always"
volumes {
container_path = "/usr/local/etc/haproxy"
host_path = "/home/dmportella/_workspaces/terraform/redis-cluster/config/haproxy"
read_only = false
}
}
resource "null_resource" "haconfig" {
provisioner "local-exec" {
command = "echo -n '${data.template_file.haproxy_config.rendered}' > ./config/haproxy/haproxy.cfg"
}
provisioner "local-exec" {
command = "echo 'Sleeping for 5...' && sleep 5"
}
}
data "template_file" "haproxy_config" {
template = "${file("${path.module}/config/haproxy/haproxy.tpl")}"
vars {
serverNames = "${join(",", docker_container.redis-servers.*.name)}"
serverIpAddresses = "${join(",", docker_container.redis-servers.*.ip_address)}"
}
}