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

使用python_terraform调用apply时无法禁用确认提示的问题

问题:python_terraform设置auto_approve=True仍弹出确认提示

我在用python_terraform自动应用Terraform配置时碰到个问题:明明在terraform.apply()里设了auto_approve=True参数,但运行脚本还是会弹出确认提示。

我的代码片段:

from python_terraform import Terraform

# 初始化Terraform
t = Terraform()
variables = {'a': 'b'}
print("初始化Terraform...")
return_code, stdout, stderr = terraform.init()
if return_code == 0:
    print("Terraform初始化成功")

# 查看状态
terraform.show()

# 应用Terraform变更
print("应用Terraform变更...")
return_code, stdout, stderr = terraform.apply(
    auto_approve=True,  # 应该自动确认但没生效
    var=variables,
    lock=False,
    capture_output=False,
    input=False
)
if stdout and stderr:
    print(stdout.decode('utf-8'))  # 打印标准输出
    print(stderr.decode('utf-8'))  # 打印标准错误

print("执行完成")

运行时的确认提示:

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.
  Enter a value: #输入"yes"后能正常执行

解决方法

1. 修正变量名不一致的问题

你代码里初始化的Terraform实例是t = Terraform(),但后续调用init()、apply()时用的是terraform这个变量——这是明显的拼写错误,导致参数根本没传递到正确的实例上。

把初始化代码改成:

terraform = Terraform()

这样后续所有调用都用同一个实例,auto_approve=True参数才能生效。

2. 升级python_terraform版本

部分旧版本的python_terraform对auto_approve参数的处理存在bug,执行以下命令升级到最新版:

pip install --upgrade python_terraform

3. 直接传递命令行参数

如果前两种方法无效,可以绕过封装的参数,直接用args传递原生Terraform命令行选项:

return_code, stdout, stderr = terraform.apply(
    var=variables,
    lock=False,
    capture_output=False,
    input=False,
    args=['-auto-approve']
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:15