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

如何通过Terraform一次性执行多子目录的plan/apply操作?

批量执行Terraform子目录的plan/apply操作

Terraform本身没有原生的批量处理子目录的命令选项,不过可以通过shell循环快速实现需求,以下是两种常用方法:

方法一:指定目录循环(适合明确知道子目录名的场景)

直接在父目录下执行以下命令,就能依次对cand1、cand2、cand3三个子目录执行plan或apply:

批量执行plan

for dir in cand1 cand2 cand3; do
  echo "=== 开始处理目录: $dir ==="
  cd "$dir" && terraform plan && cd ..
done

批量执行apply

如果不需要手动确认,可添加-auto-approve参数(注意:生产环境请谨慎使用,避免误操作):

for dir in cand1 cand2 cand3; do
  echo "=== 开始处理目录: $dir ==="
  cd "$dir" && terraform apply -auto-approve && cd ..
done

方法二:匹配所有含main.tf的子目录(适合目录较多或命名有规律的场景)

如果子目录命名有规律(比如都以cand开头),可以用find命令自动匹配:

# 批量plan
find . -maxdepth 1 -type d -name "cand*" -exec sh -c 'cd "$0" && echo "=== 处理目录: $0 ===" && terraform plan' {} \;

# 批量apply
find . -maxdepth 1 -type d -name "cand*" -exec sh -c 'cd "$0" && echo "=== 处理目录: $0 ===" && terraform apply -auto-approve' {} \;

额外提示

  • 首次执行前,每个子目录需要先完成初始化,可以在循环里加入terraform init步骤,比如把terraform plan换成terraform init && terraform plan
  • 如果需要传递变量,直接在terraform plan/apply后面追加-var "key=value"或-var-file="vars.tfvars"参数即可

内容的提问来源于stack exchange,提问作者건양대배경석 7655

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:55:21