mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 01:45:44 +03:00
Adds a `nomad_acls` flag to our Terraform stack that bootstraps Nomad ACLs via a `local-exec` provider. There's no way to set the `NOMAD_TOKEN` in the Nomad TF provider if we're bootstrapping in the same Terraform stack, so instead of using `resource.nomad_acl_token`, we also bootstrap a wide-open anonymous policy. The resulting management token is exported as an environment var with `$(terraform output environment)` and tests that want stricter ACLs will be able to write them using that token. This should also provide a basis to do similar work with Consul ACLs in the future.
Packer Builds
These builds are run as-needed to update the AMIs used by the end-to-end test infrastructure.
What goes here?
- steps that aren't specific to a given Nomad build: ex. all Linux instances need
jqandawscli. - steps that aren't specific to a given EC2 instance: nothing that includes an IP address.
- steps that infrequently change: the version of Consul or Vault we ship.
Running Packer builds
$ packer --version
1.4.4
# build linux AMI
$ packer build packer.json
# build Windows AMI
$ packer build packer-windows.json
Debugging Packer Builds
You'll need the Windows administrator password in order to access Windows machines via winrm as Packer does. You can get this by enabling -debug on your Packer build.
packer build -debug -on-error=abort packer-windows.json
...
==> amazon-ebs: Pausing after run of step 'StepRunSourceInstance'. Press enter to continue.
==> amazon-ebs: Waiting for auto-generated password for instance...
amazon-ebs: Password (since debug is enabled): <redacted>
Alternately, you can follow the steps in the AWS documentation. Note that you'll need the ec2_amazon-ebs.pem file that Packer drops in this directory.
Then in powershell (note the leading $ here indicate variable declarations, not shell prompts!):
$username = "Administrator"
$password = "<redacted>"
$securePassword = ConvertTo-SecureString -AsPlainText -Force $password
$remoteHostname = "54.x.y.z"
$port = 5986
$cred = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PsSession `
-ComputerName $remoteHostname `
-Port $port `
-Credential $cred `
-UseSSL `
-SessionOption $so `
-Authentication Basic
Packer doesn't have a cleanup command if you've run -on-error=abort. So when you're done, clean up the machine by looking for "Packer" in the AWS console: