2edbdfc8be
The e2e framework instantiates clients for Nomad/Consul but the provisioning of the actual Nomad cluster is left to Terraform. The Terraform provisioning process uses `remote-exec` to deploy specific versions of Nomad so that we don't have to bake an AMI every time we want to test a new version. But Terraform treats the resulting instances as immutable, so we can't use the same tooling to update the version of Nomad in-place. This is a prerequisite for upgrade testing. This changeset extends the e2e framework to provide the option of deploying Nomad (and, in the future, Consul/Vault) with specific versions to running infrastructure. This initial implementation is focused on deploying to a single cluster via `ssh` (because that's our current need), but provides interfaces to hook the test run at the start of the run, the start of each suite, or the start of a given test case. Terraform work includes: * provides Terraform output that written to JSON used by the framework to configure provisioning via `terraform output provisioning`. * provides Terraform output that can be used by test operators to configure their shell via `$(terraform output environment)` * drops `remote-exec` provisioning steps from Terraform * makes changes to the deployment scripts to ensure they can be run multiple times w/ different versions against the same host.
53 lines
1.5 KiB
JSON
53 lines
1.5 KiB
JSON
{
|
|
"clients": [
|
|
{
|
|
"deployment": {
|
|
"bundles": [
|
|
{
|
|
"destination": "/ops/shared",
|
|
"source": "/home/me/nomad_src/e2e/terraform/shared"
|
|
}
|
|
],
|
|
"nomad_sha": "126b86557353054cc40db474a688a27281aa85e6",
|
|
"platform": "linux_amd64",
|
|
"remote_binary_path": "/usr/local/bin/nomad",
|
|
"steps": [
|
|
"sudo chmod +x /ops/shared/provision-client.sh",
|
|
"sudo /ops/shared/config/provision-client.sh aws '126b86557353054cc40db474a688a27281aa85e6' 'indexed/client-0.hcl'"
|
|
]
|
|
},
|
|
"runner": {
|
|
"host": "192.168.1.101",
|
|
"key": "/home/me/nomad_src/e2e/terraform/keys/random-animal.pem",
|
|
"port": 22,
|
|
"user": "ubuntu"
|
|
}
|
|
}
|
|
],
|
|
"servers": [
|
|
{
|
|
"deployment": {
|
|
"bundles": [
|
|
{
|
|
"destination": "/ops/shared",
|
|
"source": "/home/me/nomad_src/e2e/terraform/shared"
|
|
}
|
|
],
|
|
"nomad_sha": "126b86557353054cc40db474a688a27281aa85e6",
|
|
"platform": "linux_amd64",
|
|
"remote_binary_path": "/usr/local/bin/nomad",
|
|
"steps": [
|
|
"sudo chmod +x /ops/shared/config/provision-server.sh",
|
|
"sudo /ops/shared/config/provision-server.sh aws 1 '126b86557353054cc40db474a688a27281aa85e6' 'indexed/server-0.hcl'"
|
|
]
|
|
},
|
|
"runner": {
|
|
"host": "192.168.1.102",
|
|
"key": "/home/me/nomad_src/e2e/terraform/keys/random-animal.pem",
|
|
"port": 22,
|
|
"user": "ubuntu"
|
|
}
|
|
}
|
|
]
|
|
}
|