open-nomad/terraform/aws
Omar Khawaja 0b9f32c6d2
AWS sandbox environment upgrade (#4873)
* upgrade Nomad from 0.8.4 to 0.8.6

* update deprecated nomad and vault commands

* update AMI ID

* add ingress rule for default fabio port and fabio UI

* upgrade Consul and Vault versions

* update AMI ID in README.md and terraform.tfvars
2018-11-13 23:21:01 -05:00
..
env/us-east AWS sandbox environment upgrade (#4873) 2018-11-13 23:21:01 -05:00
modules/hashistack AWS sandbox environment upgrade (#4873) 2018-11-13 23:21:01 -05:00
packer.json update config files to support systemd and Azure; reorganize Packer file hierarchy; update Vagrantfile to use latest tool versions 2017-11-15 19:31:46 +00:00
README.md AWS sandbox environment upgrade (#4873) 2018-11-13 23:21:01 -05:00

Provision a Nomad cluster on AWS

Pre-requisites

To get started, create the following:

Set the AWS environment variables

$ export AWS_ACCESS_KEY_ID=[AWS_ACCESS_KEY_ID]
$ export AWS_SECRET_ACCESS_KEY=[AWS_SECRET_ACCESS_KEY]

Build an AWS machine image with Packer

Packer is HashiCorp's open source tool for creating identical machine images for multiple platforms from a single source configuration. The Terraform templates included in this repo reference a publicly available Amazon machine image (AMI) by default. The AMI can be customized through modifications to the build configuration script and packer.json.

Use the following command to build the AMI:

$ packer build packer.json

Provision a cluster with Terraform

cd to an environment subdirectory:

$ cd env/us-east

Update terraform.tfvars with your SSH key name and your AMI ID if you created a custom AMI:

region                  = "us-east-1"
ami                     = "ami-0c207c24df48e155a"
instance_type           = "t2.medium"
key_name                = "KEY_NAME"
server_count            = "3"
client_count            = "4"

Modify the region, instance_type, server_count, and client_count variables as appropriate. At least one client and one server are required. You can optionally replace the Nomad binary at runtime by adding the nomad_binary variable like so:

region                  = "us-east-1"
ami                     = "ami-0c207c24df48e155a"
instance_type           = "t2.medium"
key_name                = "KEY_NAME"
server_count            = "3"
client_count            = "4"
nomad_binary            = "https://releases.hashicorp.com/nomad/0.7.0/nomad_0.7.0_linux_amd64.zip"

Provision the cluster:

$ terraform init
$ terraform get
$ terraform plan
$ terraform apply

Access the cluster

SSH to one of the servers using its public IP:

$ ssh -i /path/to/private/key ubuntu@PUBLIC_IP

The infrastructure that is provisioned for this test environment is configured to allow all traffic over port 22. This is obviously not recommended for production deployments.

Next Steps

Click here for next steps.