验证Ansible Jinja2模板中的yaml路径

验证Ansible Jinja2模板中的yaml路径,ansible,yaml,jinja2,Ansible,Yaml,Jinja2,我有yaml格式的Cloudformation模板。 模板由Ansible Jinja2呈现 我需要找到一种方法在模板中添加一些元素的验证。类似这样的内容(“if”语句是我想要得到的东西的伪代码): 是否可能?如果Mappings.Environments.{{profile}.DbInstanceClass引用了模板中的某些内容,则不可能 但如果您定义这样一个变量: Mappings: Environments: Dev: DbInstanceClass: "..."

我有yaml格式的Cloudformation模板。 模板由Ansible Jinja2呈现

我需要找到一种方法在模板中添加一些元素的验证。类似这样的内容(“if”语句是我想要得到的东西的伪代码):


是否可能?

如果
Mappings.Environments.{{profile}.DbInstanceClass
引用了模板中的某些内容,则不可能

但如果您定义这样一个变量:

Mappings:
  Environments:
    Dev:
      DbInstanceClass: "..."
{% if Mappings.Environments[profile].DbInstanceClass is defined %}
...
{% endif %}
和另一个包含
profile
值的变量,然后在模板内创建
if
语句,如下所示:

Mappings:
  Environments:
    Dev:
      DbInstanceClass: "..."
{% if Mappings.Environments[profile].DbInstanceClass is defined %}
...
{% endif %}
另见:


这里的主要问题是无法访问另一个变量。Ansible将其访问的“映射”作为Ansible变量呈现时,返回错误“致命:[localhost]:失败!=>{“已更改”:false,“msg”:“AnsibleUndefinedVariable:“映射”未定义“}”。我需要找到一种方法来验证YAML路径。