Linux

Building Linux Servers

First, we will create an instance to be used as the template for subsequent Linux servers.

instance-linux-image.tf

# Create Ubuntu Server Instance
resource "aws_instance" "Ubuntu1604-Image" {
    ami = "ami-80861296"
    instance_type = "t2.micro"

    # VPC subnet
    subnet_id = "${element(split(":", data.terraform_remote_state.vpc-state.vpc-east-pub-subnet-ids), 0)}"

    # Security Group
    vpc_security_group_ids = ["${data.terraform_remote_state.vpc-state.vpc-east-SG-Public-Default-Linux-id}"]

    # Public SSH key
    key_name = "${aws_key_pair.TF-Demo-Dev-Key.key_name}"

    tags {
        Name      = "Ubuntu1604-Image"
        Project   = "${data.terraform_remote_state.vpc-state.project-name}"
        Terraform = "true"
        Description = "Ubuntu 16.04 2016 Golden Image - Source"
    }
}


resource "aws_ami_from_instance" "Ubuntu1604-Image" {
    name               = "Ubuntu1604-Image"
    source_instance_id = "${aws_instance.Ubuntu1604-Image.id}"

    tags {
        Name        = "Ubuntu1604-Image"
        Project     = "${data.terraform_remote_state.vpc-state.project-name}"
        Terraform   = "true"
        Description = "Ubuntu 16.04 2016 Golden Image - AMI"
    }
}


resource "aws_ami_copy" "Ubuntu1604-Image" {
    name              = "Ubuntu1604-Image-Encrypted"
    description       = "Ubuntu 16.04 2016 Golden Image - AMI - Encrypted"
    source_ami_id     = "${aws_ami_from_instance.Ubuntu1604-Image.id}"
    source_ami_region = "${data.terraform_remote_state.vpc-state.east-region}"
    encrypted         = "true"

    tags {
        Name        = "Ubuntu1604-Image"
        Project     = "${data.terraform_remote_state.vpc-state.project-name}"
        Terraform   = "true"
        Description = "Ubuntu 16.04 2016 Golden Image - AMI - Encrypted"
    }
}

Bastion Host

instance-linux-Bastion.tf

# Create Windows 2016 Server Instance
resource "aws_instance" "East-Bastion-L1" {
    ami = "${aws_ami_copy.Ubuntu1604-Image.id}"
    instance_type = "t2.micro"

    # VPC subnet
    subnet_id = "${element(split(":", data.terraform_remote_state.vpc-state.vpc-east-pub-subnet-ids), 0)}"

    # Security Group
    vpc_security_group_ids = ["${data.terraform_remote_state.vpc-state.vpc-east-SG-Public-Default-Linux-id}"]

    # Public SSH key
    key_name = "${aws_key_pair.TF-Demo-Dev-Key.key_name}"

    # Private IP - static
    private_ip = "10.100.128.11"

    tags {
        Name        = "East-Bastion-L1"
        Project     = "${data.terraform_remote_state.vpc-state.project-name}"
        Terraform   = "true"
        Description = "Linux Bastion Host"
    }
}

Parked Items