From 3f45122d0d844c68cc51b93dd7640273cd8f2274 Mon Sep 17 00:00:00 2001
From: Maxime Guyot <Miouge1@users.noreply.github.com>
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
-- 
GitLab