#!/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]}")" 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/ 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