-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.tf
109 lines (88 loc) · 2.1 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Configure the Docker provider
provider "docker" {
host = "unix:///var/run/docker.sock"
}
resource "docker_image" "rabbitmq" {
name = "rabbitmq:3.6.5-management"
}
resource "docker_container" "rabbitmq" {
image = "${docker_image.rabbitmq.latest}"
name = "rabbitmq"
env = ["RABBITMQ_DEFAULT_USER=guest", "RABBITMQ_DEFAULT_PASS=guest"]
ports {
internal = 15672
external = 15672
ip = "172.17.0.1"
}
restart = "always"
}
resource "null_resource" "wait" {
depends_on = ["docker_container.rabbitmq"]
provisioner "local-exec" {
command = "echo 'Sleeping for 5...' && sleep 5"
}
}
# Configure the RabbitMQ provider
provider "rabbitmq" {
endpoint = "http://172.17.0.1:15672"
username = "guest"
password = "guest"
}
# Create a virtual host
resource "rabbitmq_vhost" "vhost_1" {
depends_on = ["null_resource.wait"]
name = "terraform"
}
resource "rabbitmq_permissions" "guest" {
depends_on = ["null_resource.wait"]
user = "guest"
vhost = "${rabbitmq_vhost.vhost_1.name}"
permissions {
configure = ".*"
write = ".*"
read = ".*"
}
}
resource "rabbitmq_exchange" "riverstyx" {
depends_on = ["null_resource.wait"]
name = "riverstyx"
vhost = "${rabbitmq_permissions.guest.vhost}"
settings {
type = "fanout"
durable = false
auto_delete = true
}
}
resource "rabbitmq_queue" "debug" {
depends_on = ["null_resource.wait"]
name = "debug-queue"
vhost = "${rabbitmq_permissions.guest.vhost}"
settings {
durable = false
auto_delete = true
arguments = {
//x-message-ttl = 60000
}
}
}
resource "rabbitmq_policy" "test" {
name = "debug-ttl"
vhost = "${rabbitmq_permissions.guest.vhost}"
policy {
pattern = "${rabbitmq_queue.debug.name}"
priority = 0
apply_to = "queues"
definition {
message-ttl = 6000
}
}
}
resource "rabbitmq_binding" "binding" {
depends_on = ["null_resource.wait"]
source = "${rabbitmq_exchange.riverstyx.name}"
vhost = "${rabbitmq_permissions.guest.vhost}"
destination = "${rabbitmq_queue.debug.name}"
destination_type = "queue"
routing_key = "*"
properties_key = "%23"
}