[英]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.