我试图分配小组" webadmins"如果该组已经存在,则将其设置为一个目录,或将其设置为group" root"如果它不存在。
- getent:
database=group
key=webadmins
fail_key=no
- debug:
var=getent_group.webadmins
- file:
path=/var/www
state=directory
owner=root
group="{{ (getent_group.webadmins == '') | ternary('root', 'webadmins') }}"
mode=0775
调试任务在组不存在时返回:
ok: [host] => {
"getent_group.webadmins": ""
}
但分配给团体礼仪的价值总是" webadmins",即使该团体不存在,也会使我的剧本失败。
该组可能存在于AD域中,因此我无法解析/etc/group
。
答案 0 :(得分:1)
以下条件对您有用:
group="{{ (getent_group.webadmins is defined) | ternary('webadmins', 'root') }}"
如果在调试任务中显示getent_group
的值,您会注意到webgroup
键的值实际设置为null
,而不是空字符串。
"getent_group": {
"webgroup": null
}
答案 1 :(得分:0)
不使用三元过滤器尝试此操作:
{{ 'webadmins' if getent_group.webadmins != '' else 'root' }}