下面是将 ami.template 文件作为输入的 make 文件。
预处理目标运行 preprocess.sh shell 脚本并传递两个环境变量 REGIONS 和 ACCOUNTS。这些变量的值分别设置为区域和 aws_account_alias Makefile 变量的值。
根据 ACCOUNTS 变量和基于 REGIONS 变量的区域特定数据生成输出文件。
出口地区=us-east-1 ; export aws_account_alias=模拟账户
制作文件
default, help::
@echo "USAGE:"
@echo "then make all"
all : preprocess
preprocess:
REGIONS="${regions}" ACCOUNTS="${aws_account_alias}" ./preprocess.sh ami.template
ami.模板文件
provider "aws" {
alias = "${REGION}"
region = "${REGION}"
}
module "ami_${aws_account_alias}_${regions}" {
count = contains(var.regions, "${REGION}")
source = "./modules/ami/"
providers = {
aws = aws.${REGION}
}
}
preprocess.sh 文件
#!/bin/bash
for template in $*
do
BASE_NAME=$(basename "${template}" .tf.template)
for region in ${REGIONS}
do
# shellcheck disable=SC2002
cat "${template}" | REGION=${region} envsubst > "${BASE_NAME}"."${region}".tf
done
done
我正在寻找解决方案,其中模板和 Makefile 应该是唯一的,并且从 root 支持,它应该能够根据输入在帐户特定文件夹内生成 tf 文件
example:
demo-account-1
ami_demo-account-1_us-east-1
ami_demo-account-1_us-east-2
demo-account-2
ami_demo-account-2_eu-east-1
ami_demo-account-2_ap-south-1