From 3f45122d0d844c68cc51b93dd7640273cd8f2274 Mon Sep 17 00:00:00 2001 From: Maxime Guyot Date: Thu, 2 May 2019 13:26:19 -0600 Subject: [PATCH] Refactor Terraform CI (#4654) --- .gitlab-ci/terraform.yml | 15 +++++++-------- tests/Makefile | 6 ++++++ tests/scripts/create-tf.sh | 5 +++++ tests/scripts/delete-tf.sh | 5 +++++ tests/scripts/terraform_install.sh | 6 ++++++ 5 files changed, 29 insertions(+), 8 deletions(-) create mode 100755 tests/scripts/create-tf.sh create mode 100755 tests/scripts/delete-tf.sh create mode 100755 tests/scripts/terraform_install.sh diff --git a/.gitlab-ci/terraform.yml b/.gitlab-ci/terraform.yml index a8df14ea4..df021364c 100644 --- a/.gitlab-ci/terraform.yml +++ b/.gitlab-ci/terraform.yml @@ -4,12 +4,10 @@ extends: .job before_script: - ./tests/scripts/rebase.sh + - ./tests/scripts/testcases_prepare.sh + - ./tests/scripts/terraform_install.sh # Set Ansible config - cp ansible.cfg ~/.ansible.cfg - # Install Terraform - - apt-get install -y unzip - - curl https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip > /tmp/terraform.zip - - unzip /tmp/terraform.zip && mv ./terraform /usr/local/bin/ && terraform --version # Prepare inventory - cp -LRp contrib/terraform/$PROVIDER/sample-inventory inventory/$CLUSTER - cd inventory/$CLUSTER @@ -36,13 +34,14 @@ only: [/^pr-.*$/] variables: ANSIBLE_INVENTORY_UNPARSED_FAILED: "true" + ANSIBLE_INVENTORY: hosts + CI_PLATFORM: tf script: - - terraform apply -auto-approve ../../contrib/terraform/$PROVIDER - - ansible-playbook -i hosts ../../cluster.yml --become + - cd ../../tests && make create-${CI_PLATFORM} -s ; cd - + - ansible-playbook ../../cluster.yml --become after_script: # Cleanup regardless of exit code - - cd inventory/$CLUSTER - - terraform destroy -auto-approve ../../contrib/terraform/$PROVIDER + - ./tests/scripts/testcases_cleanup.sh tf-validate-openstack: extends: .terraform_validate diff --git a/tests/Makefile b/tests/Makefile index b92ac7dc0..6b6956f2c 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -16,6 +16,12 @@ init-packet: echo $(PACKET_VM_SSH_PRIVATE_KEY) | base64 -d > $(HOME)/.ssh/id_rsa chmod 400 $(HOME)/.ssh/id_rsa +create-tf: + ./scripts/create-tf.sh + +delete-tf: + ./scripts/delete-tf.sh + create-gce: init-gce ansible-playbook cloud_playbooks/create-gce.yml -i local_inventory/hosts.cfg -c local \ $(LOG_LEVEL) \ diff --git a/tests/scripts/create-tf.sh b/tests/scripts/create-tf.sh new file mode 100755 index 000000000..65c1d5d1c --- /dev/null +++ b/tests/scripts/create-tf.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euxo pipefail + +cd "../inventory/$CLUSTER" +terraform apply -auto-approve "../../contrib/terraform/$PROVIDER" diff --git a/tests/scripts/delete-tf.sh b/tests/scripts/delete-tf.sh new file mode 100755 index 000000000..f85c6a752 --- /dev/null +++ b/tests/scripts/delete-tf.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euxo pipefail + +cd "../inventory/$CLUSTER" +terraform destroy -auto-approve "../../contrib/terraform/$PROVIDER" diff --git a/tests/scripts/terraform_install.sh b/tests/scripts/terraform_install.sh new file mode 100755 index 000000000..4228bbdd4 --- /dev/null +++ b/tests/scripts/terraform_install.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -euxo pipefail + +apt-get install -y unzip +curl https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip > /tmp/terraform.zip +unzip /tmp/terraform.zip && mv ./terraform /usr/local/bin/ && terraform --version