You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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[@]}"

使用方式

  1. 给脚本添加执行权限:chmod +x tf-run.sh
  2. 默认执行terraform plan:./tf-run.sh
  3. 执行其他命令(如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)

使用方式

  1. 默认执行terraform plan:python tf-run.py
  2. 执行其他命令:python tf-run.py destroy

可选优化点

  • 可以将var文件路径写入单独的配置文件(如var-files.list),让脚本动态读取,后续新增/删除文件无需修改脚本
  • 可增加命令合法性校验,限制仅支持plan、apply、destroy等常用Terraform命令

内容的提问来源于stack exchange,提问作者pendragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:40:28