[英]GitHub Actions Terraform State file cant be parsed
我目前正在使用 terraform 在云中配置基础设施。 在 Terraform 之上,我运行 GitHub Actions 来自动化更多步骤。
在这种情况下,在配置基础设施后,我使用生成的 cluster.tfstate 来解析名称和 ip,使用 bash 脚本生成一个清单文件(用于 ansible)。
但是脚本无法运行,因为它会引发以下错误
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 是否会因为我创建的 Secrets 而修改由我的脚本评估的 json? 或者星星只在shell的输出中?
工作流的代码可以在这里看到https://github.com/eco-bench/eco-bench/blob/main/.github/workflows/terraform.yml
谢谢!
以下是诀窍
source "local_file" "AnsibleInventory" {
content = templatefile("inventory.tmpl",
{
worker = {
for key, instance in google_compute_instance.worker :
instance.name => instance.network_interface.0.access_config.0.nat_ip
}
master = {
for key, instance in google_compute_instance.master :
instance.name => instance.network_interface.0.access_config.0.nat_ip
}
}
)
filename = "./inventory.ini"
}
模板看起来像这样
[all:vars]
ansible_connection=ssh
ansible_user=lucas
[cloud]
%{ for ip in master ~}
${name} ${ip}
%{ endfor ~}
[edge]
%{ for ip in worker ~}
${ip}
%{ endfor ~}
[cloud:vars]
kubernetes_role=master
[edge:vars]
kubernetes_role=edge
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.