Azure Terraform RBAC项目:脚本封装tfvar参数简化命令执行
Terraform多var-file参数封装方案
Bash脚本实现
创建名为tf-run.sh的脚本,内容如下:
#!/bin/bash # 定义所有需要加载的tfvar文件路径 VAR_FILES=( "variables/service_desk_group_members.tfvars" "variables/network_group_members.tfvars" "variables/security_group_members.tfvars" "variables/EAAdmin_goroup_members.tfvars" "variables/system_group_members.tfvars" ) # 构建--var-file参数列表 VAR_ARGS=() for file in "${VAR_FILES[@]}"; do VAR_ARGS+=("--var-file=$file") done # 执行传入的Terraform命令(默认执行plan,可指定其他命令如apply/destroy) TF_CMD=${1:-plan} terraform "$TF_CMD" "${VAR_ARGS[@]}"
使用方式
- 给脚本添加执行权限:
chmod +x tf-run.sh - 默认执行
terraform plan:./tf-run.sh - 执行其他命令(如destroy):
./tf-run.sh destroy
Python脚本实现
创建名为tf-run.py的脚本,内容如下:
import subprocess import sys # 定义所有需要加载的tfvar文件路径 var_files = [ "variables/service_desk_group_members.tfvars", "variables/network_group_members.tfvars", "variables/security_group_members.tfvars", "variables/EAAdmin_goroup_members.tfvars", "variables/system_group_members.tfvars" ] # 构建Terraform命令参数 tf_args = ["terraform"] # 优先读取传入的命令,默认执行plan tf_cmd = sys.argv[1] if len(sys.argv) > 1 else "plan" tf_args.append(tf_cmd) # 添加所有--var-file参数 for file in var_files: tf_args.append(f"--var-file={file}") # 执行命令 subprocess.run(tf_args, check=True)
使用方式
- 默认执行
terraform plan:python tf-run.py - 执行其他命令:
python tf-run.py destroy
可选优化点
- 可以将var文件路径写入单独的配置文件(如
var-files.list),让脚本动态读取,后续新增/删除文件无需修改脚本 - 可增加命令合法性校验,限制仅支持plan、apply、destroy等常用Terraform命令
内容的提问来源于stack exchange,提问作者pendragon
相关产品推荐
相关产品推荐

