open-nomad/e2e/terraform
Drew Bailey 327843acfa
base podman e2e test and provisioning updates (#8104)
* initial setup for terrform to install podman task driver

podman

* Update e2e provisioning to support root podman

Excludes setup for rootless podman. updates source ami to ubuntu 18.04
Installs podman and configures podman varlink

base podman test

ensure client status running

revert terraform directory changes

* back out random go-discover go mod change

* include podman varlink docs

* address comments
2020-06-03 14:06:58 -04:00
..
packer base podman e2e test and provisioning updates (#8104) 2020-06-03 14:06:58 -04:00
shared base podman e2e test and provisioning updates (#8104) 2020-06-03 14:06:58 -04:00
.gitignore Infrastructure for Windows e2e testing (#6584) 2019-11-19 11:06:10 -05:00
compute.tf e2e: add EBS and EFS volumes for testing CSI (#7266) 2020-03-04 10:44:51 -05:00
iam.tf csi: e2e tests for EBS and EFS plugins (#7343) 2020-03-23 13:59:18 -04:00
main.tf base podman e2e test and provisioning updates (#8104) 2020-06-03 14:06:58 -04:00
Makefile e2e: add helper to Makefile for local file deployments (#7822) 2020-04-28 16:15:58 -04:00
network.tf e2e: add EBS and EFS volumes for testing CSI (#7266) 2020-03-04 10:44:51 -05:00
provisioning.tf e2e: have TF write-out HCL for CSI volume registration (#7599) 2020-04-02 12:16:43 -04:00
README.md e2e: improve provisioning defaults and documentation (#7062) 2020-02-04 10:37:00 -05:00
terraform.tfvars e2e: improve provisioning defaults and documentation (#7062) 2020-02-04 10:37:00 -05:00
terraform.tfvars.dev fixup! e2e: add a convenient creation script 2020-04-09 11:04:26 -04:00
versions.tf e2e: upgrade terraform to 0.12.x (#6489) 2019-10-14 11:27:08 -04:00
volumes.tf e2e: have TF write-out HCL for CSI volume registration (#7599) 2020-04-02 12:16:43 -04:00

Terraform infrastructure

This folder contains terraform resources for provisioning EC2 instances on AWS to use as the target of end-to-end tests.

Terraform provisions the AWS infrastructure only, whereas the Nomad cluster is deployed to that infrastructure by the e2e framework. Terraform's output will include a provisioning stanza that can be written to a JSON file used by the e2e framework's provisioning step.

You can use Terraform to output the provisioning parameter JSON file the e2e framework uses.

Setup

You'll need Terraform 0.12+, as well as AWS credentials (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY) to create the Nomad cluster. Use envchain to store your AWS credentials.

Optionally, edit the terraform.tfvars file to change the number of Linux clients or Windows clients.

region               = "us-east-1"
instance_type        = "t2.medium"
server_count         = "3"
client_count         = "4"
windows_client_count = "1"

Run Terraform apply to deploy the infrastructure:

cd e2e/terraform/
envchain nomadaws terraform apply

Outputs

After deploying the infrastructure, you can get connection information about the cluster:

  • $(terraform output environment) will set your current shell's NOMAD_ADDR and CONSUL_HTTP_ADDR to point to one of the cluster's server nodes, and set the NOMAD_E2E variable.
  • terraform output servers will output the list of server node IPs.
  • terraform output linux_clients will output the list of Linux client node IPs.
  • terraform output windows_clients will output the list of Windows client node IPs.
  • terraform output provisioning | jq . will output the JSON used by the e2e framework for provisioning.

SSH

You can use Terraform outputs above to access nodes via ssh:

ssh -i keys/nomad-e2e-*.pem ubuntu@${EC2_IP_ADDR}

The Windows client runs OpenSSH for convenience, but has a different user and will drop you into a Powershell shell instead of bash:

ssh -i keys/nomad-e2e-*.pem Administrator@${EC2_IP_ADDR}

Teardown

The terraform state file stores all the info.

cd e2e/terraform/
envchain nomadaws terraform destroy