Loading templates/gitlab-ci-terraform.yml +37 −32 Original line number Diff line number Diff line Loading @@ -688,6 +688,41 @@ stages: fi } function tf_gitlab_backend_setup() { # impl inspired by GitLab Terraform image script # see https://gitlab.com/gitlab-org/terraform-images/-/blob/master/src/bin/gitlab-terraform.sh if tf_is_at_least 0.13.2 then log_info "configuring Terraform to use GitLab as http backend for tfstate (set \\e[33;1m\$TF_GITLAB_BACKEND_DISABLED\\e[0m to prevent this)" else fail "terraform < 0.13.2 doesn't support environment variables to configure http backend" fi # If TF_USERNAME is unset then default to GITLAB_USER_LOGIN TF_USERNAME="${TF_USERNAME:-${GITLAB_USER_LOGIN}}" # If TF_PASSWORD is unset then default to gitlab-ci-token/CI_JOB_TOKEN if [ -z "${TF_PASSWORD}" ]; then TF_USERNAME="gitlab-ci-token" TF_PASSWORD="${CI_JOB_TOKEN}" fi # If TF_ADDRESS is unset then default to GitLab backend in current project TF_ADDRESS="${TF_ADDRESS:-${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${environment_slug}}" # Set variables for the HTTP backend to default to TF_* values # see: https://developer.hashicorp.com/terraform/language/settings/backends/http export TF_HTTP_ADDRESS="${TF_HTTP_ADDRESS:-${TF_ADDRESS}}" export TF_HTTP_LOCK_ADDRESS="${TF_HTTP_LOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_LOCK_METHOD="${TF_HTTP_LOCK_METHOD:-POST}" export TF_HTTP_UNLOCK_ADDRESS="${TF_HTTP_UNLOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_UNLOCK_METHOD="${TF_HTTP_UNLOCK_METHOD:-DELETE}" export TF_HTTP_USERNAME="${TF_HTTP_USERNAME:-${TF_USERNAME}}" export TF_HTTP_PASSWORD="${TF_HTTP_PASSWORD:-${TF_PASSWORD}}" export TF_HTTP_RETRY_WAIT_MIN="${TF_HTTP_RETRY_WAIT_MIN:-5}" } function tf_init() { opts=${ENV_INIT_OPTS:-$TF_INIT_OPTS} extra_opts=${ENV_EXTRA_OPTS:-$TF_EXTRA_OPTS} Loading Loading @@ -731,40 +766,10 @@ stages: # maybe execute pre init script tf_pre_init # setup backend if [[ "$TF_GITLAB_BACKEND_DISABLED" != "true" ]] then # impl inspired by GitLab Terraform image script # see https://gitlab.com/gitlab-org/terraform-images/-/blob/master/src/bin/gitlab-terraform.sh if tf_is_at_least 0.13.2 then log_info "configuring Terraform to use GitLab as http backend for tfstate (set \\e[33;1m\$TF_GITLAB_BACKEND_DISABLED\\e[0m to prevent this)" else fail "terraform < 0.13.2 doesn't support environment variables to configure http backend" fi # If TF_USERNAME is unset then default to GITLAB_USER_LOGIN TF_USERNAME="${TF_USERNAME:-${GITLAB_USER_LOGIN}}" # If TF_PASSWORD is unset then default to gitlab-ci-token/CI_JOB_TOKEN if [ -z "${TF_PASSWORD}" ]; then TF_USERNAME="gitlab-ci-token" TF_PASSWORD="${CI_JOB_TOKEN}" fi # If TF_ADDRESS is unset then default to GitLab backend in current project TF_ADDRESS="${TF_ADDRESS:-${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${environment_slug}}" # Set variables for the HTTP backend to default to TF_* values # see: https://developer.hashicorp.com/terraform/language/settings/backends/http export TF_HTTP_ADDRESS="${TF_HTTP_ADDRESS:-${TF_ADDRESS}}" export TF_HTTP_LOCK_ADDRESS="${TF_HTTP_LOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_LOCK_METHOD="${TF_HTTP_LOCK_METHOD:-POST}" export TF_HTTP_UNLOCK_ADDRESS="${TF_HTTP_UNLOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_UNLOCK_METHOD="${TF_HTTP_UNLOCK_METHOD:-DELETE}" export TF_HTTP_USERNAME="${TF_HTTP_USERNAME:-${TF_USERNAME}}" export TF_HTTP_PASSWORD="${TF_HTTP_PASSWORD:-${TF_PASSWORD}}" export TF_HTTP_RETRY_WAIT_MIN="${TF_HTTP_RETRY_WAIT_MIN:-5}" tf_gitlab_backend_setup else backend_cfg=$(ls -1 "${environment_type}.tfbackend" 2>/dev/null || ls -1 "default.tfbackend" 2>/dev/null || echo "") if [[ -f "$backend_cfg" ]] Loading Loading
templates/gitlab-ci-terraform.yml +37 −32 Original line number Diff line number Diff line Loading @@ -688,6 +688,41 @@ stages: fi } function tf_gitlab_backend_setup() { # impl inspired by GitLab Terraform image script # see https://gitlab.com/gitlab-org/terraform-images/-/blob/master/src/bin/gitlab-terraform.sh if tf_is_at_least 0.13.2 then log_info "configuring Terraform to use GitLab as http backend for tfstate (set \\e[33;1m\$TF_GITLAB_BACKEND_DISABLED\\e[0m to prevent this)" else fail "terraform < 0.13.2 doesn't support environment variables to configure http backend" fi # If TF_USERNAME is unset then default to GITLAB_USER_LOGIN TF_USERNAME="${TF_USERNAME:-${GITLAB_USER_LOGIN}}" # If TF_PASSWORD is unset then default to gitlab-ci-token/CI_JOB_TOKEN if [ -z "${TF_PASSWORD}" ]; then TF_USERNAME="gitlab-ci-token" TF_PASSWORD="${CI_JOB_TOKEN}" fi # If TF_ADDRESS is unset then default to GitLab backend in current project TF_ADDRESS="${TF_ADDRESS:-${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${environment_slug}}" # Set variables for the HTTP backend to default to TF_* values # see: https://developer.hashicorp.com/terraform/language/settings/backends/http export TF_HTTP_ADDRESS="${TF_HTTP_ADDRESS:-${TF_ADDRESS}}" export TF_HTTP_LOCK_ADDRESS="${TF_HTTP_LOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_LOCK_METHOD="${TF_HTTP_LOCK_METHOD:-POST}" export TF_HTTP_UNLOCK_ADDRESS="${TF_HTTP_UNLOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_UNLOCK_METHOD="${TF_HTTP_UNLOCK_METHOD:-DELETE}" export TF_HTTP_USERNAME="${TF_HTTP_USERNAME:-${TF_USERNAME}}" export TF_HTTP_PASSWORD="${TF_HTTP_PASSWORD:-${TF_PASSWORD}}" export TF_HTTP_RETRY_WAIT_MIN="${TF_HTTP_RETRY_WAIT_MIN:-5}" } function tf_init() { opts=${ENV_INIT_OPTS:-$TF_INIT_OPTS} extra_opts=${ENV_EXTRA_OPTS:-$TF_EXTRA_OPTS} Loading Loading @@ -731,40 +766,10 @@ stages: # maybe execute pre init script tf_pre_init # setup backend if [[ "$TF_GITLAB_BACKEND_DISABLED" != "true" ]] then # impl inspired by GitLab Terraform image script # see https://gitlab.com/gitlab-org/terraform-images/-/blob/master/src/bin/gitlab-terraform.sh if tf_is_at_least 0.13.2 then log_info "configuring Terraform to use GitLab as http backend for tfstate (set \\e[33;1m\$TF_GITLAB_BACKEND_DISABLED\\e[0m to prevent this)" else fail "terraform < 0.13.2 doesn't support environment variables to configure http backend" fi # If TF_USERNAME is unset then default to GITLAB_USER_LOGIN TF_USERNAME="${TF_USERNAME:-${GITLAB_USER_LOGIN}}" # If TF_PASSWORD is unset then default to gitlab-ci-token/CI_JOB_TOKEN if [ -z "${TF_PASSWORD}" ]; then TF_USERNAME="gitlab-ci-token" TF_PASSWORD="${CI_JOB_TOKEN}" fi # If TF_ADDRESS is unset then default to GitLab backend in current project TF_ADDRESS="${TF_ADDRESS:-${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${environment_slug}}" # Set variables for the HTTP backend to default to TF_* values # see: https://developer.hashicorp.com/terraform/language/settings/backends/http export TF_HTTP_ADDRESS="${TF_HTTP_ADDRESS:-${TF_ADDRESS}}" export TF_HTTP_LOCK_ADDRESS="${TF_HTTP_LOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_LOCK_METHOD="${TF_HTTP_LOCK_METHOD:-POST}" export TF_HTTP_UNLOCK_ADDRESS="${TF_HTTP_UNLOCK_ADDRESS:-${TF_ADDRESS}/lock}" export TF_HTTP_UNLOCK_METHOD="${TF_HTTP_UNLOCK_METHOD:-DELETE}" export TF_HTTP_USERNAME="${TF_HTTP_USERNAME:-${TF_USERNAME}}" export TF_HTTP_PASSWORD="${TF_HTTP_PASSWORD:-${TF_PASSWORD}}" export TF_HTTP_RETRY_WAIT_MIN="${TF_HTTP_RETRY_WAIT_MIN:-5}" tf_gitlab_backend_setup else backend_cfg=$(ls -1 "${environment_type}.tfbackend" 2>/dev/null || ls -1 "default.tfbackend" 2>/dev/null || echo "") if [[ -f "$backend_cfg" ]] Loading