005636afa0 | ||
---|---|---|
.. | ||
env/us-east | ||
modules/hashistack | ||
README.md | ||
packer.json |
README.md
Provision a Nomad cluster on AWS
Pre-requisites
To get started, create the following:
- AWS account
- API access keys
- SSH key pair
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-09730698a875f6abd"
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-09730698a875f6abd"
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.