testing/infra/terraform/modules/moxy/main.tf (93 lines of code) (raw):

locals { moxy_port = "9200" bin_path = "/tmp/moxy" } data "aws_ami" "worker_ami" { owners = ["amazon"] most_recent = true filter { name = "name" values = ["amzn2-ami-hvm-*-x86_64-ebs"] } } data "aws_subnets" "public_subnets" { filter { name = "vpc-id" values = [var.vpc_id] } } resource "aws_security_group" "main" { vpc_id = var.vpc_id egress = [ { cidr_blocks = ["0.0.0.0/0"] description = "" from_port = 0 ipv6_cidr_blocks = [] prefix_list_ids = [] protocol = "-1" security_groups = [] self = false to_port = 0 } ] ingress = [ { cidr_blocks = ["0.0.0.0/0"] description = "" from_port = 22 ipv6_cidr_blocks = [] prefix_list_ids = [] protocol = "tcp" security_groups = [] self = false to_port = 22 }, { cidr_blocks = ["0.0.0.0/0"] description = "" from_port = local.moxy_port ipv6_cidr_blocks = [] prefix_list_ids = [] protocol = "tcp" security_groups = [] self = false to_port = local.moxy_port } ] } resource "aws_instance" "moxy" { ami = data.aws_ami.worker_ami.id instance_type = var.instance_type subnet_id = data.aws_subnets.public_subnets.ids[0] vpc_security_group_ids = [aws_security_group.main.id] key_name = aws_key_pair.provisioner_key.key_name monitoring = false connection { type = "ssh" user = "ec2-user" host = self.public_ip private_key = file("${var.aws_provisioner_key_name}") } provisioner "file" { source = "${var.moxy_bin_path}/moxy" destination = local.bin_path } provisioner "remote-exec" { inline = [ "sudo cp ${local.bin_path} moxy", "sudo chmod +x moxy", "screen -d -m ./moxy -port=${local.moxy_port} -password=${random_password.moxy_password.result}", "sleep 1" ] } tags = var.tags } resource "aws_key_pair" "provisioner_key" { public_key = file("${var.aws_provisioner_key_name}.pub") tags = var.tags } resource "random_password" "moxy_password" { length = 16 special = false }