【问题标题】:Pass argument to Python code from terraform with space [duplicate]从带有空格的terraform将参数传递给Python代码[重复]
【发布时间】:2022-01-25 17:25:19
【问题描述】:

我正在尝试将参数传递给将从 terraform command 调用的 python 代码。我正在寻找通过传递有空格的 args 来解决 terraform 代码的方法

    resource "null_resource" "CWS" {
        provisioner "local-exec" {
        command =  "python ..\\ruc.py  ${var.com_port} '${var.cmd1}"
      }
        triggers = {
       always_run = "${timestamp()}"
     }
    }

在我的 tfvars 中

com_port="COM12"
cmd1= "n.set_d_cfg w0 p2.5 1678"

我的python代码的主要功能如下

def main():
    # Parse arguments from command line
    parser = argparse.ArgumentParser()

    # Set up required arguments this script
    parser.add_argument('com_port', type=str, help='comport')
    parser.add_argument('uc', type=str, help='cmd')
    
    # Parse the given arguments
    args = parser.parse_args()

    print(args.com_port)
    print(args.uc)


if __name__ == '__main__':
    main()

遇到错误

null_resource.CWS (local-exec): Executing: ["cmd" "/C" "python ..\\ruc.py COM12 n.set_d_cfg w0 p2.5 1678"]
null_resource.CWS (local-exec): usage: ruc.py [-h] com_port uc
null_resource.CWS (local-exec): ruc.py: error: unrecognized arguments: w0 p2.5 1678
╷
│ Error: local-exec provisioner error
│
│   with null_resource.CWS,
│   on SPRW.tf line 107, in resource "null_resource" "CWS":
│  107:   provisioner "local-exec" {
│
│ Error running command 'python ..\\ruc.py COM12 n.set_d_cfg w0 p2.5 1678': exit status 2. Output: usage: ruc.py [-h] com_port uc
│ ruc.py: error: unrecognized arguments: w0 p2.5 1678

【问题讨论】:

  • 我不认为这是一个 terraform 问题,而是 Python 只解析第一个参数而不查看其他参数。您可以通过查看无法识别的参数部分看到这一点:w0 p2.5 1678。这意味着读取了第一个,即n.set_d_cfg。因此,您需要向 Python 添加另外三个参数。至少那是我的两分钱。
  • 我明白了,我可以在 python 端使用 Kargs** 来解决。但我正在寻找在 terraform 中解决的方法

标签: python python-3.x terraform


【解决方案1】:

您正在使用命名参数。所以应该是:

command =  "python ..\\ruc.py  ${var.com_port} uc='${var.cmd1}'"

【讨论】:

  • 抱歉这个已经试过了。但它没有用,几乎同样的错误。唯一的变化是引号中的'n.set_d_cfg w0 p2.5 1678'
  • @Sreevathsabr 让我们回到开头。请提供您的真实null_resource。您提供的代码甚至不是有效的 TF 代码。
  • 我的错,我错过了一行。我现在已经添加了。其实是local-exec
猜你喜欢
  • 2016-04-08
  • 1970-01-01
  • 2011-12-29
  • 2018-06-27
  • 2019-08-17
  • 2017-05-07
  • 2011-04-30
  • 2019-12-20
  • 1970-01-01
相关资源
最近更新 更多