Ansible变量错误部署模板文件
Ansible Variable Error Deploying Template File
我正在尝试将 JSON 文件部署为模板并在 group_var 中为其配置变量。这是我的 ansible 结构化方式:
inventories > dc > environment > partner_name > group_vars/hosts file > host.yml
└───EWR1
├───Prod
│ └───Partner
│ └───Candy
│ └───group_vars
└───QA
└───Partner
└───Tech
└───group_vars
我有一个名为 candy_deployment
的角色,在该目录中我有以下其他目录:
- 文件
- 任务
- 模板
在主机 yaml 中,我定义了以下变量:
candy_vars:
price: '5'
number: '20'
account: '3fdgdfgFGDfdgdGsdgERgtGERGetgtgTGRT'
date: '8 Feb 2022 18:00:00 EST'
这是我的模板文件 candy_deployment.json.j2
:
{
"price": {{ candy_vars.price }},
"number": {{ candy_vars.number }},
"gatekeeper": null,
"solTreasuryAccount": "{{ candy_vars.account }}",
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "{{ candy_vars.date }}",
"endSettings": null,
"whitelistMintSettings": null,
"hiddenSettings": null,
"storage": "storage",
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
当我在 AWX 中 运行 ansible 时,我收到以下错误:
{
"msg": "AnsibleUndefinedVariable: 'candy_vars' is undefined",
"_ansible_no_log": false,
"changed": false
}
我不是 100% 明白为什么它没有看到变量,而且我有点迷失了阅读配置。任何指导将不胜感激。
谢谢!
所以我想出了我自己的问题。这不起作用的原因之一是因为我为主机 yaml 使用的文件名与我在主机文件中定义的不同。例如:
Original Host File Name: build01-hostname-com.yml
Host Defined in Hosts File: build-hostname-com
我需要将主机 yaml 文件从 build01-hostname-com.yml
更改为 build-hostname-com.yml
,它能够看到变量。我还用 if statements
更新了 j2 文件,以防那里没有选项,它会给它一个默认值并且不会失败。例如:
{% if candy_vars.price is defined %}
"price": {{ candy_vars.price }},
{% else %}
"price": 0
{% endif %}
我对每个变量都做了 using/defining。希望这对遇到同样问题的其他人有所帮助!
我正在尝试将 JSON 文件部署为模板并在 group_var 中为其配置变量。这是我的 ansible 结构化方式:
inventories > dc > environment > partner_name > group_vars/hosts file > host.yml
└───EWR1
├───Prod
│ └───Partner
│ └───Candy
│ └───group_vars
└───QA
└───Partner
└───Tech
└───group_vars
我有一个名为 candy_deployment
的角色,在该目录中我有以下其他目录:
- 文件
- 任务
- 模板
在主机 yaml 中,我定义了以下变量:
candy_vars:
price: '5'
number: '20'
account: '3fdgdfgFGDfdgdGsdgERgtGERGetgtgTGRT'
date: '8 Feb 2022 18:00:00 EST'
这是我的模板文件 candy_deployment.json.j2
:
{
"price": {{ candy_vars.price }},
"number": {{ candy_vars.number }},
"gatekeeper": null,
"solTreasuryAccount": "{{ candy_vars.account }}",
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "{{ candy_vars.date }}",
"endSettings": null,
"whitelistMintSettings": null,
"hiddenSettings": null,
"storage": "storage",
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
当我在 AWX 中 运行 ansible 时,我收到以下错误:
{
"msg": "AnsibleUndefinedVariable: 'candy_vars' is undefined",
"_ansible_no_log": false,
"changed": false
}
我不是 100% 明白为什么它没有看到变量,而且我有点迷失了阅读配置。任何指导将不胜感激。
谢谢!
所以我想出了我自己的问题。这不起作用的原因之一是因为我为主机 yaml 使用的文件名与我在主机文件中定义的不同。例如:
Original Host File Name: build01-hostname-com.yml
Host Defined in Hosts File: build-hostname-com
我需要将主机 yaml 文件从 build01-hostname-com.yml
更改为 build-hostname-com.yml
,它能够看到变量。我还用 if statements
更新了 j2 文件,以防那里没有选项,它会给它一个默认值并且不会失败。例如:
{% if candy_vars.price is defined %}
"price": {{ candy_vars.price }},
{% else %}
"price": 0
{% endif %}
我对每个变量都做了 using/defining。希望这对遇到同样问题的其他人有所帮助!