#!/usr/bin/env bash
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# Variable read:
# - ${CSIT_DIR} - CSIT main directory, where terraform modules are located.
- # - ${NODENESS} - Node multiplicity of desired testbed.
- # - ${FLAVOR} - Node flavor string, see common.sh
+ # - ${TERRAFORM_MODULE_DIR} - Terraform module directory.
set -exuo pipefail
fi
pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!"
- pushd "${NODENESS}_${FLAVOR}_c5n" || die "Pushd failed!"
+ pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!"
export TF_LOG=INFO
- terraform apply -auto-approve || die "Failed to run terraform apply!"
+ terraform apply -no-color -auto-approve || die "Terraform apply failed!"
popd || die "Popd failed!"
popd || die "Popd failed!"
}
+
function terraform_destroy () {
# Run terraform destroy command to prepare module.
#
# Variable read:
# - ${CSIT_DIR} - CSIT main directory, where terraform modules are located.
- # - ${NODENESS} - Node multiplicity of desired testbed.
- # - ${FLAVOR} - Node flavor string, see common.sh
+ # - ${TERRAFORM_MODULE_DIR} - Terraform module directory.
set -exuo pipefail
fi
pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!"
- pushd "${NODENESS}_${FLAVOR}_c5n" || die "Pushd failed!"
+ pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!"
export TF_LOG=INFO
- terraform destroy -auto-approve || die "Failed to run terraform destroy!"
+ terraform destroy -auto-approve -no-color || die "Terraform destroy failed!"
popd || die "Popd failed!"
popd || die "Popd failed!"
}
#
# Variable read:
# - ${CSIT_DIR} - CSIT main directory, where terraform modules are located.
- # - ${NODENESS} - Node multiplicity of desired testbed.
- # - ${FLAVOR} - Node flavor string, see common.sh
+ # - ${TERRAFORM_MODULE_DIR} - Terraform module directory.
set -exuo pipefail
fi
pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!"
- pushd "${NODENESS}_${FLAVOR}_c5n" || die "Pushd failed!"
+ pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!"
plugin_url="https://github.com/radekg/terraform-provisioner-ansible/"
plugin_url+="releases/download/v2.5.0/"
wget -O "${plugin_path}" "${plugin_url}" || die "Failed to download plugin!"
chmod +x "${plugin_path}" || die "Failed to add execute rights!"
+ rm -f terraform.tfstate || die "Failed to clear terraform state!"
export TF_LOG=INFO
terraform init || die "Failed to run terraform init!"
+ popd || die "Popd failed!"
+ popd || die "Popd failed!"
+}
+
+
+function terraform_install () {
+
+ # Install terraform.
+
+ OS_ARCH=$(uname -m) || die "Failed to get arch."
+ case "${OS_ARCH}" in
+ x86_64) architecture="amd64" ;;
+ aarch64) architecture="arm64" ;;
+ esac
+
+ terraform_version="1.4.2/terraform_1.4.2_linux_${architecture}.zip"
+ terraform_url="https://releases.hashicorp.com/terraform"
+ terraform_link="${terraform_url}/${terraform_version}"
+ wget "${terraform_link}" || die "Failed to install Terraform!"
+ unzip "terraform_1.4.2_linux_${architecture}.zip" || {
+ die "Failed to install Terraform!"
+ }
+ mv "terraform" "/usr/local/bin" || die "Failed to install Terraform!"
+ rm "terraform_1.4.2_linux_${architecture}.zip" || {
+ die "Failed to install Terraform!"
+ }
+}
+
+function terraform_output () {
+
+ # Run terraform output command to prepare module.
+ #
+ # Variable read:
+ # - ${CSIT_DIR} - CSIT main directory, where terraform modules are located.
+ # - ${TERRAFORM_MODULE_DIR} - Terraform module directory.
+ # - ${TERRAFORM_OUTPUT_VAR} - Terraform variable to export.
+
+ set -exuo pipefail
+
+ if ! installed terraform; then
+ die "Please install terraform!"
+ fi
+
+ pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!"
+ pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!"
+ TERRAFORM_OUTPUT_VAL=$(terraform output --raw "${TERRAFORM_OUTPUT_VAR}")
+ popd || die "Popd failed!"
+ popd || die "Popd failed!"
+}
+
+
+function terraform_validate () {
+
+ # Run terraform validate command to prepare module.
+ #
+ # Variable read:
+ # - ${CSIT_DIR} - CSIT main directory, where terraform modules are located.
+ # - ${TERRAFORM_MODULE_DIR} - Terraform module directory.
+
+ set -exuo pipefail
+
+ if ! installed terraform; then
+ die "Please install terraform!"
+ fi
+
+ pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!"
+ pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!"
+ export TF_LOG=INFO
+ terraform validate || die "Terraform validate failed!"
popd || die "Popd failed!"
popd || die "Popd failed!"
}