我正在尝试检查某些字符串是否是列表的元素之一。我设法获得了预期的结果,但是如果没有得到警告,我找不到找到解决方法的方法:
[警告]:当语句中不应包含jinja2模板分隔符时,例如{{}}或{%%}。
您能帮助我了解如何针对此用例做出正确的“何时”声明吗?
这是变量repos
的内容:
TASK [debug msg={{ repos }}]
ok: [zimbramta01.essi.lab] => {
"msg": {
"changed": true,
"cmd": "yum repolist | cut -f1 -d\" \" | grep -iv
\"repolist\\|loaded\\|repo\"",
"delta": "0:00:10.884070",
"end": "2018-09-20 08:03:55.210767",
"failed": false,
"rc": 0,
"start": "2018-09-20 08:03:44.326697",
"stderr": "",
"stderr_lines": [],
"stdout": "epel/x86_64\nrhel-7-server-htb-rpms/x86_64\nrhel-7-server-
rpms/7Server/x86_64\nzimbra\nzimbra-889-network\nzimbra-889-oss",
"stdout_lines": [
"epel/x86_64",
"rhel-7-server-htb-rpms/x86_64",
"rhel-7-server-rpms/7Server/x86_64",
"zimbra",
"zimbra-889-network",
"zimbra-889-oss"
]
}
}
这是我的“何时”语句的样子(它正在起作用,我只想学习如何正确编写它)。
- name: agrega repositorio epel
shell: rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
args:
warn: False
when: '"epel/x86_64" not in {{ repos.stdout_lines }}'
我尝试了不同的方法来执行此操作,即使阅读了Ansible文档,jinja2文档以及stackoverflow中的其他一些帖子,我也没有找到警告就找不到正确的方法来做到这一点:/
答案 0 :(得分:5)
很简单:
when: "'epel/x86_64' not in repos.stdout_lines"
该警告表示,when
键的值被视为一个Jinja2表达式,即整个
{% "epel/x86_64" not in {{ repos.stdout_lines }} %}
{{ ... }}
中的{% ... %}
是多余的。