143 lines
4.4 KiB
HCL
143 lines
4.4 KiB
HCL
data "template_file" "user_data_server" {
|
|
template = "${file("${path.root}/user-data-server.sh")}"
|
|
|
|
vars {
|
|
server_count = "${var.server_count}"
|
|
region = "${var.region}"
|
|
retry_join = "${var.retry_join}"
|
|
}
|
|
}
|
|
|
|
data "template_file" "user_data_client" {
|
|
template = "${file("${path.root}/user-data-client.sh")}"
|
|
count = "${var.client_count}"
|
|
|
|
vars {
|
|
region = "${var.region}"
|
|
retry_join = "${var.retry_join}"
|
|
}
|
|
}
|
|
|
|
data "template_file" "nomad_client_config" {
|
|
template = "${file("${path.root}/configs/client.hcl")}"
|
|
}
|
|
|
|
data "template_file" "nomad_server_config" {
|
|
template = "}"
|
|
}
|
|
|
|
resource "aws_instance" "server" {
|
|
ami = "${data.aws_ami.main.image_id}"
|
|
instance_type = "${var.instance_type}"
|
|
key_name = "${module.keys.key_name}"
|
|
vpc_security_group_ids = ["${aws_security_group.primary.id}"]
|
|
count = "${var.server_count}"
|
|
|
|
# Instance tags
|
|
tags {
|
|
Name = "${local.random_name}-server-${count.index}"
|
|
ConsulAutoJoin = "auto-join"
|
|
SHA = "${var.nomad_sha}"
|
|
User = "${data.aws_caller_identity.current.arn}"
|
|
}
|
|
|
|
user_data = "${data.template_file.user_data_server.rendered}"
|
|
iam_instance_profile = "${aws_iam_instance_profile.instance_profile.name}"
|
|
|
|
provisioner "file" {
|
|
content = "${file("${path.root}/configs/${var.indexed == false ? "server.hcl" : "indexed/server-${count.index}.hcl"}")}"
|
|
destination = "/tmp/server.hcl"
|
|
|
|
connection {
|
|
user = "ubuntu"
|
|
private_key = "${module.keys.private_key_pem}"
|
|
}
|
|
}
|
|
|
|
provisioner "remote-exec" {
|
|
inline = [
|
|
"aws s3 cp s3://nomad-team-test-binary/builds-oss/${var.nomad_sha}.tar.gz nomad.tar.gz",
|
|
"sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service",
|
|
"sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/",
|
|
"sudo cp /tmp/server.hcl /etc/nomad.d/nomad.hcl",
|
|
"sudo chmod 0755 /usr/local/bin/nomad",
|
|
"sudo chown root:root /usr/local/bin/nomad",
|
|
"sudo systemctl enable nomad.service",
|
|
"sudo systemctl start nomad.service",
|
|
]
|
|
|
|
connection {
|
|
user = "ubuntu"
|
|
private_key = "${module.keys.private_key_pem}"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_instance" "client" {
|
|
ami = "${data.aws_ami.main.image_id}"
|
|
instance_type = "${var.instance_type}"
|
|
key_name = "${module.keys.key_name}"
|
|
vpc_security_group_ids = ["${aws_security_group.primary.id}"]
|
|
count = "${var.client_count}"
|
|
depends_on = ["aws_instance.server"]
|
|
|
|
# Instance tags
|
|
tags {
|
|
Name = "${local.random_name}-client-${count.index}"
|
|
ConsulAutoJoin = "auto-join"
|
|
SHA = "${var.nomad_sha}"
|
|
User = "${data.aws_caller_identity.current.arn}"
|
|
}
|
|
|
|
ebs_block_device = {
|
|
device_name = "/dev/xvdd"
|
|
volume_type = "gp2"
|
|
volume_size = "50"
|
|
delete_on_termination = "true"
|
|
}
|
|
|
|
user_data = "${element(data.template_file.user_data_client.*.rendered, count.index)}"
|
|
iam_instance_profile = "${aws_iam_instance_profile.instance_profile.name}"
|
|
|
|
provisioner "file" {
|
|
content = "${file("${path.root}/configs/${var.indexed == false ? "client.hcl" : "indexed/client-${count.index}.hcl"}")}"
|
|
destination = "/tmp/client.hcl"
|
|
|
|
connection {
|
|
user = "ubuntu"
|
|
private_key = "${module.keys.private_key_pem}"
|
|
}
|
|
}
|
|
|
|
provisioner "remote-exec" {
|
|
inline = [
|
|
"aws s3 cp s3://nomad-team-test-binary/builds-oss/${var.nomad_sha}.tar.gz nomad.tar.gz",
|
|
"sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/",
|
|
"sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service",
|
|
"sudo cp /tmp/client.hcl /etc/nomad.d/nomad.hcl",
|
|
"sudo chmod 0755 /usr/local/bin/nomad",
|
|
"sudo chown root:root /usr/local/bin/nomad",
|
|
|
|
# Setup Host Volumes
|
|
"sudo mkdir /tmp/data",
|
|
|
|
# Run Nomad Service
|
|
"sudo systemctl enable nomad.service",
|
|
|
|
"sudo systemctl start nomad.service",
|
|
|
|
# Install CNI plugins
|
|
"sudo mkdir -p /opt/cni/bin",
|
|
|
|
"wget -q -O - https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz | sudo tar -C /opt/cni/bin -xz",
|
|
]
|
|
|
|
# Setup host volumes
|
|
|
|
connection {
|
|
user = "ubuntu"
|
|
private_key = "${module.keys.private_key_pem}"
|
|
}
|
|
}
|
|
}
|