【发布时间】: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