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。希望这对遇到同样问题的其他人有所帮助!