Terraform CLI自动丢弃待执行运行的命令问询
Terraform Cloud 待执行运行自动处理方案
问题1:terraform apply是否支持自动丢弃待执行运行的参数?
没有直接可用的参数。terraform apply本身没有内置选项能自动跳过或丢弃队列中的待执行运行——Terraform Cloud的队列机制是为了避免并发操作引发状态冲突,官方并未提供这类强制跳过的参数。
问题2:有没有专用CLI命令丢弃运行?
有。使用Terraform CLI的terraform run discard命令可手动指定运行ID来丢弃对应待执行任务。若要批量处理队列中的运行,需先列出当前工作区的运行列表,再逐个操作:
- 列出工作区中处于待执行状态的运行:
terraform run list -workspace=WORKSPACENAME | grep -E "(pending|queued)"
- 丢弃单个指定运行:
terraform run discard run-RUNID
问题3:如何编写“丢弃运行后执行apply”的脚本?
可结合terraform run list、文本处理工具(如grep、awk)和循环逻辑实现,以下是bash环境下的示例脚本:
#!/bin/bash # 替换为你的工作区名称 WORKSPACE="WORKSPACENAME" # 提取所有待执行状态的运行ID RUN_IDS=$(terraform run list -workspace=$WORKSPACE | grep -E "(pending|queued)" | awk '{print $1}') # 循环丢弃每个目标运行 for RUN_ID in $RUN_IDS; do echo "正在丢弃运行: $RUN_ID" terraform run discard $RUN_ID done # 执行apply操作(-auto-approve可选,根据需求决定是否自动确认) terraform apply -auto-approve
注意:需确保Terraform CLI已通过terraform login完成Terraform Cloud的身份认证,脚本才能正常调用相关命令。
内容的提问来源于stack exchange,提问作者Dommondke
相关产品推荐
相关产品推荐

