|
@@ -0,0 +1,80 @@
|
|
|
+locals {
|
|
|
+ owner = var.aws_partition == "aws-us-gov" ? "513442679011" : "099720109477"
|
|
|
+}
|
|
|
+
|
|
|
+data "aws_ami" "ubuntu" {
|
|
|
+ most_recent = true
|
|
|
+ owners = [ local.owner ]
|
|
|
+
|
|
|
+ filter {
|
|
|
+ name = "name"
|
|
|
+ values = ["ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*"]
|
|
|
+ }
|
|
|
+
|
|
|
+ #filter {
|
|
|
+ # name = "image-id"
|
|
|
+ # values = [ "ami-0a4050943619c0460" ]
|
|
|
+ #}
|
|
|
+
|
|
|
+ filter {
|
|
|
+ name = "root-device-type"
|
|
|
+ values = ["ebs"]
|
|
|
+ }
|
|
|
+
|
|
|
+ filter {
|
|
|
+ name = "virtualization-type"
|
|
|
+ values = ["hvm"]
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module "test_instance" {
|
|
|
+ source = "terraform-aws-modules/ec2-instance/aws"
|
|
|
+ version = "~> 2.0"
|
|
|
+
|
|
|
+ name = "test_instance"
|
|
|
+ instance_count = var.create_test_instance ? 1 : 0
|
|
|
+ disable_api_termination = false # the test instance can always be destroyed
|
|
|
+
|
|
|
+ ami = data.aws_ami.ubuntu.image_id
|
|
|
+ instance_type = "t3a.micro"
|
|
|
+ key_name = var.test_instance_key_name
|
|
|
+ vpc_security_group_ids = var.security_group_ids
|
|
|
+ subnet_id = var.subnet_id
|
|
|
+ tags = merge(var.standard_tags, var.tags)
|
|
|
+
|
|
|
+ ebs_optimized = true
|
|
|
+ monitoring = false # Do we use this?
|
|
|
+
|
|
|
+ user_data_base64 = "${data.template_cloudinit_config.cloud-init.rendered}"
|
|
|
+}
|
|
|
+
|
|
|
+data "template_file" "cloud-init" {
|
|
|
+ # Should these be in a common directory? I suspect they'd be reusable
|
|
|
+ template = "${file("${path.module}/cloud-init/cloud-init.tpl")}"
|
|
|
+
|
|
|
+ vars = {
|
|
|
+ hostname = "test_instance"
|
|
|
+ fqdn = "test_instance.${var.inside_domain}"
|
|
|
+ environment = var.environment
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+# Render a multi-part cloud-init config making use of the part
|
|
|
+# above, and other source files
|
|
|
+data "template_cloudinit_config" "cloud-init" {
|
|
|
+ gzip = true
|
|
|
+ base64_encode = true
|
|
|
+
|
|
|
+ # Main cloud-config configuration file.
|
|
|
+ part {
|
|
|
+ filename = "init.cfg"
|
|
|
+ content_type = "text/cloud-config"
|
|
|
+ content = "${data.template_file.cloud-init.rendered}"
|
|
|
+ }
|
|
|
+
|
|
|
+ # Additional parts as needed
|
|
|
+ #part {
|
|
|
+ # content_type = "text/x-shellscript"
|
|
|
+ # content = "ffbaz"
|
|
|
+ #}
|
|
|
+}
|