You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DevOps-Bash-tools/.envrc-terraform

74 lines
2.6 KiB
Bash

#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: Mon Feb 22 17:42:01 2021 +0000
#
# https://github.com/HariSekhon/DevOps-Bash-tools
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/HariSekhon
#
set -euo pipefail
[ -n "${DEBUG:-}" ] && set -x
#srcdir="$(dirname "${BASH_SOURCE[0]}")"
# would auto-determine the version from the state file, but this commands seems to always return the version of your local binary pulling the state file, not the version from the actual terraform_version field in state file if you see when opening it up in the cloud bucket
# terraform state pull | jq -r .terraform_version
export TERRAFORM_VERSION=1.1.9
tfenv_list_sed(){
sed 's/^\*[[:space:]]*//; s/(.*//; s/[[:space:]]//g'
}
tfenv_setup(){
local version="${1:-${TERRAFORM_VERSION:-}}"
if [ -z "$version" ]; then
return 0
fi
if ! type -P tfenv &>/dev/null; then
return 0
fi
if ! tfenv list | tfenv_list_sed | grep -Fxq "$version"; then
echo "Terraform version '$version' not installed in tfenv, installing now..."
tfenv install "$version"
fi
local current_version
current_version="$(tfenv list | grep '^\*' | tfenv_list_sed)"
if [ "$current_version" != "$version" ]; then
# XXX: Careful, this will switch globally and could cause race conditions with other shells / scripts on the same machine
tfenv use "$version"
fi
}
tfenv_setup "$TERRAFORM_VERSION"
# =================================================================================
# for deployment/<environment> subdirectories, all you need in their .envrc is this
#
# source_up
#
# export TERRAFORM_VERSION=1.1.9
#
# tfenv_setup "$TERRAFORM_VERSION"
#
# =================================================================================
# XXX: set these or other variables for Terraform code to find
export CLOUDFLARE_EMAIL=hari@...
export CLOUDFLARE_API_KEY=... # generate here: https://dash.cloudflare.com/profile/api-tokens
#export CLOUDFLARE_TOKEN=... # used by cloudflare_api.sh but not by terraform module
# export the variables for terraform
export TF_VAR_cloudflare_email="$CLOUDFLARE_EMAIL"
export TF_VAR_cloudflare_api_key="$CLOUDFLARE_API_KEY" # must be a key, not a token using the link above
# GITHUB_* environment variables may interfere with GitHub provider, so unset them
for env_var in $(env | awk -F= '$1 ~ /GITHUB/ {print $1}'); do
unset "$env_var"
done