如何使Ansible Jinja2查找循环列表?

时间:2017-09-06 12:28:49

标签: ansible jinja2

在Ansible中,我试图从环境变量列表中获取第一个定义的值:BUILD_USER_EMAILGERRIT_CHANGE_OWNER_EMAILGERRIT_EVENT_ACCOUNT_EMAILGERRIT_PATCHSET_UPLOADER_EMAIL

获得一个的代码看起来像

- email: "{{ lookup('env', 'BUILD_USER_EMAIL')}}"

当未定义变量时,这将解析为空字符串,这是正常的。

现在的问题是如何实现这作为回退的循环,所以我会尝试找到第一个定义的值。

2 个答案:

答案 0 :(得分:2)

根据OP’s own research改进了答案。

| default

如果您没有设置任何变量,或者只是在envcandidates列表的末尾添加默认值,您可能希望添加{{1}}过滤器。

答案 1 :(得分:1)

我可以看到这是一个解决方案:

- email: "{{ lookup('env', 'BUILD_USER_EMAIL') |
             default(lookup('env', 'GERRIT_CHANGE_OWNER_EMAIL'), True) |
             default(lookup('env', 'GERRIT_EVENT_ACCOUNT_EMAIL'), True) |
             default(lookup('env', 'GERRIT_PATCHSET_UPLOADER_EMAIL'), True) |
             default('UNDEFINED', True) }}"

True强制jinja2将空字符串计算为None。