0

我需要在后端配置中使用变量。Pre-Terragrunt,我通过在应用之前使用 Bash 初始化并生成我的计划文件来做到这一点,到目前为止效果很好。如果 terragrunt 不支持 s3 后端的 vars,是否可以改为使用 bash 脚本来执行 terraform init?或者我还有其他方法可以考虑吗?

我的 bash 脚本通常如下所示:

SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # The directory of this script
namespace="$TF_VAR_vpcname-$(basename $SCRIPTDIR)"
echo "Namespace for terraform remote state: $namespace"

# Raise error if var isn't defined.
if [[ -z "$TF_VAR_resourcetier" ]]; then
    exit_if_error 1 "TF_VAR_resourcetier not defined."
fi
if [[ -z "$AWS_DEFAULT_REGION" ]]; then
    exit_if_error 1 "AWS_DEFAULT_REGION not defined."
fi
if [[ -z "$TF_VAR_bucket_extension" ]]; then
    exit_if_error 1 "TF_VAR_bucket_extension not defined."
fi
# init the s3 backend if it doesn't exist.
terraform init \
    -input=false \
    -backend-config="bucket=state.terraform.$TF_VAR_bucket_extension" \
    -backend-config="key=$TF_VAR_resourcetier/$namespace/terraform.tfstate" \
    -backend-config="region=$AWS_DEFAULT_REGION" \
    -backend-config="dynamodb_table=locks.state.terraform.$TF_VAR_bucket_extension"
terraform plan -out=tfplan -input=false
4

0 回答 0