我刚刚开始学习ansible。我想知道我如何做一个IF ELSE语句在可见。我知道在If语句中使用when是可行的。因此,这里是一堆代码,我试图使用时。这里的目的是检查priv的值是否为"privilege"。这段代码是工作的,但我认为有什么错误的时候声明。输出总是返回false,即使假设有一个真实的结果。有人知道哪里出错了吗?谢谢。:)
代码看起来像。更容易阅读
name: User | Username set_fact:User_username: "{{项。Split (' ')1}}"可缓存:yes with_items: "{{output12}}">
name: check priv set_fact:
priv: "{{item。Split (' ')[2]}}"with_items:"{{output12}},注册:privname: check set_fact:is_privilege:假何时:priv != "privilege"with_items:"{{output12}}">
name: check 2 set_fact:is_privilege:真何时:priv == "privilege"with_items:"{{output12}}">
这个问题失去了格式,有点难以阅读;你能编辑它并修复格式吗?
一种方法是在Jinja中使用过滤器的组合,然后检查结果是否至少有一个项目,像这样:
- name: check privilege
set_fact:
is_privilege: >-
{{
output3.stdout[0].split('n')
| select('eq', priv)
| list | length > 0
}}
BTW,当用调试显示变量时,最好使用var
而不是msg
;这将更好地格式化值,例如让您查看是否有多余的空格:
- debug:
var: priv
您可以使用相同的形式来调试Jinja表达式;这将把结果整齐地格式化为数据结构,因此您可以快速试验过滤器:
- debug:
var: >-
output3.stdout[0].split('n')
| select('eq', priv)
| list | length > 0