python terraform应用自动批准不起作用

python 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

我有一个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_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日)