YAML - 数组的交集

时间:2016-07-13 15:40:46

标签: yaml ansible

在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。有没有办法做到这一点?

2 个答案:

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