gpt4 book ai didi

Ansible "when statement should not include jinja2 templating"

转载 作者:行者123 更新时间:2023-12-01 23:16:10 32 4
gpt4 key购买 nike

我正在尝试检查某个字符串是否是列表的元素之一。我设法得到了想要的结果,但我找不到一种方法来做到这一点而不收到警告说:

[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}.



你能帮我理解如何为这个用例做出正确的“何时”声明吗?

这是变量 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"
]
}
}

这就是我的“when”语句的样子(它正在运行,我只是想学习如何正确编写它)。
- 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 doc、jinja2 doc 和 stackoverflow 中的其他一些帖子时,我也无法在没有任何警告的情况下找到正确的方法:/

最佳答案

就这么简单:

when: "'epel/x86_64' not in repos.stdout_lines"

警告意味着 when 的值key 被视为一个 Jinja2 表达式作为一个整体,即
{% "epel/x86_64" not in {{ repos.stdout_lines }} %}

还有一个 {{ ... }}{% ... %}是多余的。

关于Ansible "when statement should not include jinja2 templating",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418680/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com