版本
\n设置
\n我有以下文件夹结构
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 scripts\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_script.py\nRun Code Online (Sandbox Code Playgroud)\n主要.tf:
\nlocals {\n python = (substr(pathexpand("~"), 0, 1) == "/") ? "python3" : "python.exe"\n}\n\nresource "null_resource" "custom_objects" {\n for_each = local.custom_objects\n\n triggers = {\n name = each.key\n }\n\n provisioner "local-exec" {\n command = <<-EOT\n python3 -m my_script \'{"key_1": "value_1"}\'\n EOT\n interpreter = [\n local.python\n ]\n working_dir = "${path.module}/scripts"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n./scripts/my_script.py:
\nif __name__ == \'__main__\':\n print(\'my_script executed.\')\nRun Code Online (Sandbox Code Playgroud)\n问题\n当我运行时terraform plan/apply,出现以下错误:
\n\n运行命令 \'python3 -m my_script \'{"key_1": "value_1"}\'\n\xe2\x94\x82 \' 时出错:退出状态 2。输出:/home_path/.pyenv/versions/3.9.1 /bin/python3: 无法打开文件 \'/path_to_repo/scripts/python3 -m my_script \'{"key_1": "value_1"}\'\n\xe2\x94\x82 \': [Errno 2]没有这样的文件或目录
\n
疑问
\n看来当interpreter提供参数时,它会附加到 中定义的路径working_dir,这解释了此错误:
'/path_to_repo/scripts/python3 -m my_script '{"key_1": "value_1"}'
正如您所看到的,路径的结尾python3可能不存在。
我设法使用以下语法获得结果:
resource "null_resource" "custom_objects" {
for_each = local.custom_objects
triggers = {
name = each.key
}
provisioner "local-exec" {
command = <<-EOT
${local.python} -m my_script '{"key_1": "value_1"}'
EOT
working_dir = "${path.module}/scripts" # works with ${path.root} as well
}
}
Run Code Online (Sandbox Code Playgroud)
您可能还会发现terraform_data它是null_resource.
| 归档时间: |
|
| 查看次数: |
5697 次 |
| 最近记录: |