使用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
相关产品推荐
相关产品推荐

