在Ansible剧本的main.yaml文件中,我有以下游戏:
- name: configure client
include: client-configuration.yml
when: "'a' in group_names or 'b' in group_names or 'c' in group_names or 'd' in group_names or 'e' in group_names or 'f' in group_names or 'g' in group_names or 'h' in group_names or 'i' in group_names or 'j' in group_names..."
这种情况持续了一段时间。理想情况下,我想创建一个包含a,b,c等的数组,如果我的数组和group_names的交集有> 0个元素,则返回true,否则返回false。有没有办法做到这一点?
答案 0 :(得分:2)
我发现这种方法比| length
方法更具可读性。
- when: "['grp1', 'grp2', 'grp3'] | intersect(group_names) | count > 0"
答案 1 :(得分:1)
要获取两个列表的交集,请使用intersect filter。要获得列表的长度,请使用length filter。
您的情况可能如下所示:
- name: configure client
include: client-configuration.yml
when: group_names | intersect(myList) | length