在Ansible Jinja2模板中验证yaml路径

时间:2018-07-02 11:48:22

标签: ansible yaml jinja2

我有Yaml格式的Cloudformation模板。 该模板由Ansible Jinja2渲染。

我需要找到一种方法来添加对模板中某些元素的验证。像这样的东西(“ if”语句是我想要获得的伪代码):

Parameters:
  EnvironmentType:
    Default: {{profile}}

    Mappings:
        Environments:
            dev:
                DbSnapshotArn: ""
            test:
                DbSnapshotArn: "AAA"

           Type: AWS::RDS::DBInstance
            Properties:
             {% if Mappings.Environments.{{profile}}.DbInstanceClass %}
                    DBSnapshotIdentifier: !FindInMap [Environments, !Ref 'EnvironmentType', DbSnapshotArn]
            {% endif %}

有可能吗?

1 个答案:

答案 0 :(得分:0)

如果Mappings.Environments.{{profile}}.DbInstanceClass引用模板中的内容,则不会。

但是,如果您定义这样的变量:

Mappings:
  Environments:
    Dev:
      DbInstanceClass: "..."

还有另一个包含profile值的变量,然后可以在模板内部创建一个if语句,如下所示:

{% if Mappings.Environments[profile].DbInstanceClass is defined %}
...
{% endif %}

另请参阅: