python terraform应用自动批准不起作用
我有一个python代码来执行terraform plan和applypython terraform应用自动批准不起作用,terraform,python-3.7,Terraform,Python 3.7,我有一个python代码来执行terraform plan和apply from python_terraform import * class terraform(object): @staticmethod def execute(action): print(action) tf = Terraform( working_dir='/Users/kheshav/PROJECTS/terraform/demo_sup
from python_terraform import *
class terraform(object):
@staticmethod
def execute(action):
print(action)
tf = Terraform(
working_dir='/Users/kheshav/PROJECTS/terraform/demo_supinfo/tf_files')
approve = {"auto-approve": True}
if action is "PLAN":
"""
return_code, stdout, stderr = tf.plan(
capture_output=True)
"""
tf.plan(no_color=IsFlagged, refresh=False, capture_output=True)
return_code, stdout, stderr = tf.plan()
print(stdout)
elif action == "APPLY":
return_code, stdout, stderr = tf.apply(
capture_output=True, auto_approve=True, **approve)
elif action == "DESTROY":
return_code, stdout, stderr = tf.destroy(
capture_output=True, auto_approve=True, **approve)
elif action == "OUTPUT":
stdout = tf.output(
capture_output=True)
return stdout
尽管我已指定了{auto approve:True}
,但计划部分工作正常,但应用部分仍在等待“是”。有关信息,我正在使用Python3.7和PythonTerraform模块0.10.1
apply部分挂起,如果退出脚本,将获得以下输出:
Traceback (most recent call last):
File "main.py", line 85, in <module>
handle_command(command, channel)
File "main.py", line 23, in handle_command
response = terraform.execute("APPLY")
File "/Users/kheshav/PROJECTS/terraform/demo_supinfo/chatbot/terraform.py", line 26, in execute
print("APPLYING")
File "/Users/kheshav/.pyenv/versions/demo_supinfo/lib/python3.7/site-packages/python_terraform/__init__.py", line 113, in apply
return self.cmd('apply', *args, **option_dict)
File "/Users/kheshav/.pyenv/versions/demo_supinfo/lib/python3.7/site-packages/python_terraform/__init__.py", line 299, in cmd
out, err = p.communicate()
File "/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py", line 939, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py", line 1681, in _communicate
ready = selector.select(timeout)
File "/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/selectors.py", line 415, in select
fd_event_list = self._selector.poll(timeout)
KeyboardInterrupt
回溯(最近一次呼叫最后一次):
文件“main.py”,第85行,在
handle_命令(命令,通道)
handle_命令中第23行的文件“main.py”
响应=terraform.execute(“应用”)
文件“/Users/kheshav/PROJECTS/terraform/demo_supinfo/chatbot/terraform.py”,执行中的第26行
打印(“应用”)
文件“/Users/kheshav/.pyenv/versions/demo_supinfo/lib/python3.7/site packages/python_terraform/_init__.py”,第113行,适用于
返回self.cmd('apply',*args,**选项)
cmd中的文件“/Users/kheshav/.pyenv/versions/demo\u supinfo/lib/python3.7/site packages/python\u terraform/\uuuuuuuuu init\uuuuuuu.py”,第299行
out,err=p.communicate()
文件“/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py”,第939行
stdout,stderr=self.\u通信(输入、结束时间、超时)
文件“/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py”,第1681行,在
就绪=选择器。选择(超时)
文件“/Users/kheshav/.pyenv/versions/3.7.3/lib/python3.7/selectors.py”,选择中第415行
fd_event_list=self._selector.poll(超时)
键盘中断
谢谢我知道了如何在没有提示输入yes的情况下实现这一点。使用python terraform的最新0.10.1版本
tf = Terraform(working_dir='my/path')
tf.init()
tf.plan()
tf.apply(skip_plan=True)
# then later
tf.destroy()
似乎auto_approve变量与skip_plan()关联。您到底在问什么?你有错误吗?如果是,请张贴。@Legoroj:应用部分挂起。如果我停止脚本,我已经添加了输出。谢谢。我会回来,一旦我找到了错误…这是一个解决这个问题的办法。这个问题现在解决了吗?@navanitachora看起来仍然存在。我也有同样的问题。(2020年3月2日)