【发布时间】:2021-09-09 14:03:06
【问题描述】:
我目前正在使用 terraform 在云中配置基础架构。在 Terraform 之上,我运行 GitHub Actions 来自动化更多步骤。
在这种情况下,在配置基础架构后,我使用生成的 cluster.tfstate 使用 bash 脚本生成清单文件(用于 ansible)来解析名称和 ips。
但是脚本无法运行,因为它会引发以下错误
Run bash ./generate-inventory.sh cluster.tfstate > ../hosts.ini
parse error: Invalid numeric literal at line 1, column 9
Error: Process completed with exit code 4.
但是在本地运行它可以工作。当我在工作流中的 cluster.tfstate 上做猫时,情况如下
Run cat cluster.tfstate
***
"version": 4,
"terraform_version": "1.0.1",
"serial": 386,
"lineage": "3d16a659-b093-551c-b3ab-a1cf8aa5031c",
"outputs": ***
"master_ip_addresses": ***
"value": ***
GitHub Actions 是否会因为我创建的秘密而修改由我的脚本评估的 json?或者星星只在shell的输出中?
工作流代码可以看这里https://github.com/eco-bench/eco-bench/blob/main/.github/workflows/terraform.yml
谢谢!
【问题讨论】:
-
你能检查是你的脚本还是输入导致了错误?尝试仅运行带有虚拟 JSON 硬编码输入的脚本,尝试验证来自脚本的 JSON 输入或先验证它,以查看它是否是有效的 JSON。这会提供有关该问题的更多信息吗?
-
使用
local_file提供程序来生成 Ansible 清单。这会容易得多,并且可能也可以在这里解决问题。 -
感谢@Matt,使用
local_file成功解决了这个问题
标签: json bash terraform github-actions