-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path3.servers-infrastructure.tf
138 lines (109 loc) · 3.36 KB
/
3.servers-infrastructure.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
resource "aws_instance" "elastic" {
instance_type = "${var.instance_type}"
# Lookup the correct AMI based on the region
# we specified
ami = "${lookup(var.amis, var.region)}"
key_name = "${aws_key_pair.deployer.key_name}"
# subnet for this instance - only private subnet
subnet_id = "${aws_subnet.nodezoo.id}"
# Our Security group
security_groups = ["${aws_security_group.private.id}"]
connection {
user = "ubuntu"
private_key = "${file("ssh/nodezoo")}"
}
provisioner "remote-exec" {
inline = [
"sudo apt-get update -y",
"curl -sSL https://get.docker.com/ | sudo sh",
"sudo usermod -aG docker ubuntu"
]
}
provisioner "remote-exec" {
inline = [
"docker run -d -p 9200:9200 -p 9300:9300 elasticsearch"
]
}
#Instance tags
tags {
Name = "nodezoo-elastic"
}
}
resource "aws_instance" "redis" {
instance_type = "${var.small_instance_type}"
# Lookup the correct AMI based on the region
# we specified
ami = "${lookup(var.amis, var.region)}"
# subnet for this instance - only private subnet
subnet_id = "${aws_subnet.nodezoo.id}"
key_name = "${aws_key_pair.deployer.key_name}"
private_ip = "${var.redis_private_ip}"
# Our Security group
security_groups = ["${aws_security_group.private.id}"]
connection {
user = "ubuntu"
private_key = "${file("ssh/nodezoo")}"
}
provisioner "remote-exec" {
inline = [
"sudo apt-get update -y",
"curl -sSL https://get.docker.com/ | sudo sh",
"sudo usermod -aG docker ubuntu"
]
}
provisioner "remote-exec" {
inline = [
# next line is just just for debugging purposes
"echo docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes > docker_cmd.sh",
"docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes",
]
}
#Instance tags
tags {
Name = "nodezoo-redis"
}
}
resource "aws_instance" "base" {
instance_type = "${var.instance_type}"
# Lookup the correct AMI based on the region
# we specified
ami = "${lookup(var.amis, var.region)}"
# subnet for this instance - only private subnet
subnet_id = "${aws_subnet.nodezoo.id}"
private_ip = "${var.base_private_ip}"
key_name = "${aws_key_pair.deployer.key_name}"
# Our Security group to allow HTTP and SSH access
# HINT: Because we are using also subnet_id the id of security group should be used instead of name
security_groups = ["${aws_security_group.private.id}"]
connection {
user = "ubuntu"
private_key = "${file("ssh/nodezoo")}"
}
# prepare app folder and install required packages
provisioner "remote-exec" {
inline = [
"mkdir /tmp/app",
"sudo apt-get update -y",
"curl -sSL https://get.docker.com/ | sudo sh",
"sudo usermod -aG docker ubuntu"
]
}
# copy project files
provisioner "file" {
source = "services/nodezoo-base/"
destination = "/tmp/app"
}
# build and run docker
provisioner "remote-exec" {
inline = [
"docker build -t nodezoo-base /tmp/app/.",
# next line is just just for debugging purposes
"echo docker run -d --net=host -e BASE_HOST='${var.base_private_ip}' --restart=on-failure:20 nodezoo-base > docker_cmd.sh",
"docker run -d --net=host -e BASE_HOST='${var.base_private_ip}' --restart=on-failure:20 nodezoo-base"
]
}
#Instance tags
tags {
Name = "nodezoo-base"
}
}