Skip to content

Commit 58dc994

Browse files
authored
Merge pull request #3 from xe-nvdk/master
Update to Terraform 0.15.4
2 parents 86a1cd0 + 28c669e commit 58dc994

File tree

8 files changed

+183
-163
lines changed

8 files changed

+183
-163
lines changed

LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

auth.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
provider "aws" {
2+
region = "us-east-2"
3+
access_key = ""
4+
secret_key = ""
5+
}

files/init.sh

Lines changed: 0 additions & 9 deletions
This file was deleted.

init/data-nodes.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/sh
2+
sudo apt-get update
3+
sudo apt dist-upgrade -y
4+
sudo apt-get install -y python wget
5+
sudo sleep 10;
6+
7+
# Format attached disks
8+
sudo mkfs.ext4 /dev/xvdh
9+
10+
# Create folders & mount disks
11+
sudo mkdir -p /mnt/influxdb/data
12+
sudo mount /dev/xvdh /mnt/influxdb/data
13+
14+
# Create script to mount disks at startup
15+
echo 'echo # influxdb-data-disk >> /etc/fstab' >> /tmp/disks.sh
16+
echo 'echo /dev/xvdh /mnt/influxdb/data ext4 defaults 0 2 >> /etc/fstab' >> /tmp/disks.sh
17+
18+
# Mount disks at startup
19+
sudo bash /tmp/disks.sh
20+
21+
# Download, install and start InfluxDB data-nodes
22+
sudo wget -O /tmp/influxdb-data_1.8.6-c1.8.6_amd64.deb https://dl.influxdata.com/enterprise/releases/influxdb-data_1.8.6-c1.8.6_amd64.deb
23+
sleep 5;
24+
sudo dpkg -i /tmp/influxdb-data_1.8.6-c1.8.6_amd64.deb
25+
sleep 5;
26+
sudo systemctl start influxdb

init/meta-nodes.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/sh
2+
sudo apt-get update
3+
sudo apt dist-upgrade -y
4+
sudo apt-get install -y python wget
5+
sudo sleep 10;
6+
7+
# Format attached disks
8+
sudo mkfs.ext4 /dev/xvdh
9+
10+
# Create folders & mount disks
11+
sudo mkdir -p /mnt/influxdb/meta/data
12+
sudo mount /dev/xvdh /mnt/influxdb/meta/data
13+
14+
# Create script to mount disks at startup
15+
echo 'echo # influxdb-meta-disk >> /etc/fstab' >> /tmp/disks.sh
16+
echo 'echo /dev/xvdh /mnt/influxdb/meta/data ext4 defaults 0 2 >> /etc/fstab' >> /tmp/disks.sh
17+
18+
# Mount disks at startup
19+
sudo bash /tmp/disks.sh
20+
21+
# Download, install and start InfluxDB meta-nodes
22+
sudo wget -O /tmp/influxdb-meta_1.8.6-c1.8.6_amd64.deb https://dl.influxdata.com/enterprise/releases/influxdb-meta_1.8.6-c1.8.6_amd64.deb
23+
sleep 5;
24+
sudo dpkg -i /tmp/influxdb-meta_1.8.6-c1.8.6_amd64.deb
25+
sleep 5;
26+
sudo systemctl start influxdb-meta

main.tf

Lines changed: 88 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,126 +1,113 @@
1-
# Used to obtain availabilty zones when creating persistent storage.
2-
data "aws_subnet" "selected" {
3-
count = "${length(var.subnet_ids)}"
4-
id = "${var.subnet_ids[count.index]}"
5-
}
6-
71
# Create data nodes, equally distrubting them across specified subnets / AVs
82
resource "aws_instance" "data_node" {
9-
ami = "${var.ami}"
10-
instance_type = "${var.instance_type}"
11-
tags = "${merge(var.tags, map("Name", "${var.name}-data${format("%02d", count.index + 1)}"), map("Role", "${replace(var.name, "-", "_")}_data"), map("Type", "data"))}"
12-
subnet_id = "${element(var.subnet_ids, count.index)}"
13-
key_name = "${var.key_name}"
14-
user_data = "${var.user_data == "" ? file("${path.module}/files/init.sh") : var.user_data }"
15-
ebs_optimized = true
16-
vpc_security_group_ids = ["${concat(list(aws_security_group.influx_cluster.id, aws_security_group.data_node.id), var.security_groups)}"]
17-
count = "${var.data_instances}"
3+
ami = var.ami
4+
instance_type = var.instance_type
5+
subnet_id = var.subnet_id
6+
key_name = var.key_name
7+
user_data = var.user_data == "" ? file("${path.module}/init/data-nodes.sh") : var.user_data
8+
ebs_optimized = true
9+
vpc_security_group_ids = var.security_group
10+
count = var.data_instances
1811
}
1912

2013
resource "aws_ebs_volume" "data" {
21-
size = "${var.data_disk_size}"
22-
encrypted = true
23-
type = "io1"
24-
iops = "${var.data_disk_iops}"
25-
availability_zone = "${element(data.aws_subnet.selected.*.availability_zone, count.index)}"
26-
tags = "${var.tags}"
27-
count = "${var.data_instances}"
14+
size = var.data_disk_size
15+
encrypted = true
16+
type = "io1"
17+
iops = var.data_disk_iops
18+
availability_zone = var.availabity_zone
19+
count = var.data_instances
2820
}
2921

3022
resource "aws_volume_attachment" "data_attachment" {
31-
device_name = "${var.data_disk_device_name}"
32-
volume_id = "${aws_ebs_volume.data.*.id[count.index]}"
33-
instance_id = "${aws_instance.data_node.*.id[count.index]}"
34-
count = "${var.data_instances}"
35-
force_detach = true
23+
device_name = var.data_disk_device_name
24+
volume_id = aws_ebs_volume.data.*.id[count.index]
25+
instance_id = aws_instance.data_node.*.id[count.index]
26+
count = var.data_instances
27+
force_detach = true
3628
}
3729

38-
3930
# Creates all meta nodes in the first / same subnet, this avoids splits if one AV goes offline.
4031
# Data nodes function fine without access to meta-nodes between shard creation.
41-
resource "aws_instance" "meta_node" {
42-
ami = "${var.ami}"
43-
instance_type = "t2.medium"
44-
tags = "${merge(var.tags, map("Name", "${var.name}-meta${format("%02d", count.index + 1)}"), map("Role", "${replace(var.name, "-", "_")}_meta"), map("Type", "data"))}"
45-
subnet_id = "${element(var.subnet_ids,0)}"
46-
key_name = "${var.key_name}"
47-
user_data = "${var.user_data == "" ? file("${path.module}/files/init.sh") : var.user_data }"
48-
vpc_security_group_ids = ["${concat(list(aws_security_group.influx_cluster.id), var.security_groups)}"]
49-
count = "${var.meta_instances}"
50-
}
32+
resource "aws_instance" "meta_node" {
33+
ami = var.ami
34+
instance_type = "t2.medium"
35+
subnet_id = var.subnet_id
36+
key_name = var.key_name
37+
user_data = var.user_data == "" ? file("${path.module}/init/meta-nodes.sh") : var.user_data
38+
vpc_security_group_ids = var.security_group
39+
count = var.meta_instances
40+
}
5141

52-
resource "aws_ebs_volume" "meta" {
53-
size = "100"
54-
encrypted = true
55-
type = "io1"
56-
iops = "4000"
57-
availability_zone = "${data.aws_subnet.selected.0.availability_zone}"
58-
tags = "${var.tags}"
59-
count = "${var.meta_instances}"
60-
}
42+
resource "aws_ebs_volume" "meta" {
43+
size = "100"
44+
encrypted = true
45+
type = "io1"
46+
iops = var.data_disk_iops
47+
availability_zone = var.availabity_zone
48+
count = var.meta_instances
49+
}
6150

62-
resource "aws_volume_attachment" "meta" {
63-
device_name = "${var.meta_disk_device_name}"
64-
volume_id = "${aws_ebs_volume.meta.*.id[count.index]}"
65-
instance_id = "${aws_instance.meta_node.*.id[count.index]}"
66-
count = "${var.meta_instances}"
67-
force_detach = true
68-
}
51+
resource "aws_volume_attachment" "meta" {
52+
device_name = var.meta_disk_device_name
53+
volume_id = aws_ebs_volume.meta.*.id[count.index]
54+
instance_id = aws_instance.meta_node.*.id[count.index]
55+
count = var.meta_instances
56+
force_detach = true
57+
}
6958

7059
resource "aws_route53_record" "meta_node" {
71-
zone_id = "${var.zone_id}"
72-
name = "${var.name}-meta${format("%02d", count.index + 1)}"
73-
type = "A"
74-
ttl = "120"
75-
records = ["${element(aws_instance.meta_node.*.private_ip, count.index)}"]
76-
count = "${var.meta_instances}"
77-
}
60+
zone_id = var.zone_id
61+
name = "${var.name}-meta${format("%02d", count.index + 1)}"
62+
type = "A"
63+
ttl = "120"
64+
records = ["${element(aws_instance.meta_node.*.private_ip, count.index)}"]
65+
count = var.meta_instances
66+
}
7867

79-
resource "aws_route53_record" "data_node" {
80-
zone_id = "${var.zone_id}"
81-
name = "${var.name}-data${format("%02d", count.index + 1)}"
82-
type = "A"
83-
ttl = "120"
84-
records = ["${element(aws_instance.data_node.*.private_ip, count.index)}"]
85-
count = "${var.data_instances}"
86-
}
68+
resource "aws_route53_record" "data_node" {
69+
zone_id = var.zone_id
70+
name = "${var.name}-data${format("%02d", count.index + 1)}"
71+
type = "A"
72+
ttl = "120"
73+
records = ["${element(aws_instance.data_node.*.private_ip, count.index)}"]
74+
count = var.data_instances
75+
}
8776

8877

8978
# Setup inter-node cluster communications.
90-
resource "aws_security_group" "influx_cluster" {
91-
name = "${var.name}_cluster"
92-
description = "Rules required for an Influx Enterprise Cluster"
93-
tags = "${merge(var.tags, map("Name", "${var.name}"), map("Role", "influx"))}"
94-
vpc_id = "${var.vpc_id}"
95-
}
79+
resource "aws_security_group" "influxdb_cluster" {
80+
name = "${var.name}_cluster"
81+
description = "Rules required for an Influx Enterprise Cluster"
82+
vpc_id = "${var.vpc_id}"
83+
}
9684

97-
resource "aws_security_group_rule" "cluster_comms" {
98-
type = "ingress"
99-
from_port = 8088
100-
to_port = 8091
101-
protocol = "tcp"
102-
cidr_blocks = ["${formatlist("%s/32", concat(aws_instance.meta_node.*.private_ip, aws_instance.data_node.*.private_ip))}"]
103-
security_group_id = "${aws_security_group.influx_cluster.id}"
104-
}
85+
resource "aws_security_group_rule" "cluster_comms" {
86+
type = "ingress"
87+
from_port = 8088
88+
to_port = 8091
89+
protocol = "tcp"
90+
cidr_blocks = "${formatlist("%s/32", concat(aws_instance.meta_node.*.private_ip, aws_instance.data_node.*.private_ip))}"
91+
security_group_id = "${aws_security_group.influxdb_cluster.id}"
92+
}
10593

10694
resource "aws_security_group_rule" "outbound" {
107-
type = "egress"
108-
to_port = 0
109-
protocol = "-1"
110-
from_port = 0
111-
cidr_blocks = ["0.0.0.0/0"]
112-
security_group_id = "${aws_security_group.influx_cluster.id}"
113-
}
95+
type = "egress"
96+
to_port = 0
97+
protocol = "-1"
98+
from_port = 0
99+
cidr_blocks = ["0.0.0.0/0"]
100+
security_group_id = "${aws_security_group.influxdb_cluster.id}"
101+
}
114102

115103
resource "aws_security_group" "data_node" {
116-
description = "Security group for influx data node ingress"
117-
vpc_id = "${var.vpc_id}"
118-
tags = "${merge(var.tags, map("Name", "${var.name}"), map("Role", "influx"))}"
119-
120-
ingress {
121-
from_port = "8086"
122-
to_port = "8086"
123-
protocol = "tcp"
124-
cidr_blocks = ["0.0.0.0/0"]
125-
}
126-
}
104+
description = "Security group for influx data node ingress"
105+
vpc_id = var.vpc_id
106+
107+
ingress {
108+
from_port = "8086"
109+
to_port = "8086"
110+
protocol = "tcp"
111+
cidr_blocks = ["0.0.0.0/0"]
112+
}
113+
}

outputs.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ output "data_node_ids" {
1010

1111
output "data_node_count" {
1212
description = "Yields the data node count, this can be used in conjunction with modules that configure load balancers etc"
13-
value = "${var.data_instances}"
13+
value = var.data_instances
1414
}

0 commit comments

Comments
 (0)