open-nomad/e2e/terraform/packer
2020-07-09 09:28:53 -04:00
..
linux use latest podman release (#8403) 2020-07-09 09:28:53 -04:00
windows e2e: upgrade consul in packer setup to 1.7.3 from 1.6.1 2020-05-11 11:17:28 -06:00
packer-windows.json e2e: packer builds should not be public (#6998) 2020-01-27 16:28:25 -05:00
packer.json base podman e2e test and provisioning updates (#8104) 2020-06-03 14:06:58 -04:00
README.md Infrastructure for Windows e2e testing (#6584) 2019-11-19 11:06:10 -05:00

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 jq and awscli.
  • 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: