From 0371664d03bdeb6ccd27e169d090a164b6c488fa Mon Sep 17 00:00:00 2001 From: Tim Gross Date: Mon, 14 Oct 2019 10:23:41 -0400 Subject: [PATCH] e2e: move remote-exec inline to script (#6488) A failing script in a `remote-exec` provisioner's `inline` stanza won't fail the provisioning step. This lets us continue on to execute tests against potentially broken deployments, rather than letting us know the provisioning itself failed. --- e2e/terraform/compute.tf | 32 ++----------------- e2e/terraform/shared/config/README.md | 2 ++ .../shared/config/provision-client.sh | 31 ++++++++++++++++++ .../shared/config/provision-server.sh | 22 +++++++++++++ e2e/terraform/shared/scripts/client.sh | 0 e2e/terraform/shared/scripts/server.sh | 0 e2e/terraform/shared/scripts/setup.sh | 0 7 files changed, 57 insertions(+), 30 deletions(-) create mode 100644 e2e/terraform/shared/config/README.md create mode 100755 e2e/terraform/shared/config/provision-client.sh create mode 100755 e2e/terraform/shared/config/provision-server.sh mode change 100644 => 100755 e2e/terraform/shared/scripts/client.sh mode change 100644 => 100755 e2e/terraform/shared/scripts/server.sh mode change 100644 => 100755 e2e/terraform/shared/scripts/setup.sh diff --git a/e2e/terraform/compute.tf b/e2e/terraform/compute.tf index 65a44897d..473d1fb16 100644 --- a/e2e/terraform/compute.tf +++ b/e2e/terraform/compute.tf @@ -53,17 +53,9 @@ resource "aws_instance" "server" { private_key = "${module.keys.private_key_pem}" } } - provisioner "remote-exec" { inline = [ - "aws s3 cp s3://nomad-team-test-binary/builds-oss/${var.nomad_sha}.tar.gz nomad.tar.gz", - "sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service", - "sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/", - "sudo cp /tmp/server.hcl /etc/nomad.d/nomad.hcl", - "sudo chmod 0755 /usr/local/bin/nomad", - "sudo chown root:root /usr/local/bin/nomad", - "sudo systemctl enable nomad.service", - "sudo systemctl start nomad.service", + "/ops/shared/config/provision-server.sh ${var.nomad_sha}", ] connection { @@ -111,29 +103,9 @@ resource "aws_instance" "client" { provisioner "remote-exec" { inline = [ - "aws s3 cp s3://nomad-team-test-binary/builds-oss/${var.nomad_sha}.tar.gz nomad.tar.gz", - "sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/", - "sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service", - "sudo cp /tmp/client.hcl /etc/nomad.d/nomad.hcl", - "sudo chmod 0755 /usr/local/bin/nomad", - "sudo chown root:root /usr/local/bin/nomad", - - # Setup Host Volumes - "sudo mkdir /tmp/data", - - # Run Nomad Service - "sudo systemctl enable nomad.service", - - "sudo systemctl start nomad.service", - - # Install CNI plugins - "sudo mkdir -p /opt/cni/bin", - - "wget -q -O - https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz | sudo tar -C /opt/cni/bin -xz", + "/ops/shared/config/provision-client.sh ${var.nomad_sha}", ] - # Setup host volumes - connection { user = "ubuntu" private_key = "${module.keys.private_key_pem}" diff --git a/e2e/terraform/shared/config/README.md b/e2e/terraform/shared/config/README.md new file mode 100644 index 000000000..c6e0f435c --- /dev/null +++ b/e2e/terraform/shared/config/README.md @@ -0,0 +1,2 @@ +Scripts installed by Packer into our base images, to be run during +`remote-exec` provisioning by Terraform. diff --git a/e2e/terraform/shared/config/provision-client.sh b/e2e/terraform/shared/config/provision-client.sh new file mode 100755 index 000000000..316f8d470 --- /dev/null +++ b/e2e/terraform/shared/config/provision-client.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# installs and configures the desired build of Nomad as a server +set -o errexit +set -o nounset + +nomad_sha=$1 + +# download +aws s3 cp s3://nomad-team-test-binary/builds-oss/${nomad_sha}.tar.gz nomad.tar.gz + +# unpack and install +sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/ +sudo chmod 0755 /usr/local/bin/nomad +sudo chown root:root /usr/local/bin/nomad + +# install config file +sudo cp /tmp/client.hcl /etc/nomad.d/nomad.hcl + +# Setup Host Volumes +sudo mkdir /tmp/data + +# Install CNI plugins +sudo mkdir -p /opt/cni/bin +wget -q -O - \ + https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz \ + | sudo tar -C /opt/cni/bin -xz + +# enable as a systemd service +sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service +sudo systemctl enable nomad.service +sudo systemctl start nomad.service diff --git a/e2e/terraform/shared/config/provision-server.sh b/e2e/terraform/shared/config/provision-server.sh new file mode 100755 index 000000000..6e0e5983a --- /dev/null +++ b/e2e/terraform/shared/config/provision-server.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# installs and configures the desired build of Nomad as a server +set -o errexit +set -o nounset + +nomad_sha=$1 + +# download +aws s3 cp s3://nomad-team-test-binary/builds-oss/${nomad_sha}.tar.gz nomad.tar.gz + +# unpack and install +sudo tar -zxvf nomad.tar.gz -C /usr/local/bin/ +sudo chmod 0755 /usr/local/bin/nomad +sudo chown root:root /usr/local/bin/nomad + +# install config file +sudo cp /tmp/server.hcl /etc/nomad.d/nomad.hcl + +# enable as a systemd service +sudo cp /ops/shared/config/nomad.service /etc/systemd/system/nomad.service +sudo systemctl enable nomad.service +sudo systemctl start nomad.service diff --git a/e2e/terraform/shared/scripts/client.sh b/e2e/terraform/shared/scripts/client.sh old mode 100644 new mode 100755 diff --git a/e2e/terraform/shared/scripts/server.sh b/e2e/terraform/shared/scripts/server.sh old mode 100644 new mode 100755 diff --git a/e2e/terraform/shared/scripts/setup.sh b/e2e/terraform/shared/scripts/setup.sh old mode 100644 new mode 100755