Ansible的条件组成员资格

时间:2017-06-08 20:22:04

标签: ansible ansible-2.x

我试图分配小组" 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

2 个答案:

答案 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' }}