ansible - group_names|intersect 使用 intersect 命令
问题描述
- debug:
msg: "welcome"
when: group_names|intersect(['PEGAALL', 'MDMALL'])
你能告诉我intersect函数的用法吗?我已经尝试过 group_names|intersect 命令,但我不知道它的用途。
解决方案
intersect是一个过滤器(参见Intersection):
“获取两个列表中所有项目的唯一列表”
例如库存
[test_jails]
test_01
test_02
test_03
[PEGAALL]
test_02
剧本
- hosts: test_jails
tasks:
- debug:
msg: "{{ group_names|intersect(['PEGAALL', 'MDMALL']) }}"
- debug:
msg: "welcome"
when: group_names|intersect(['PEGAALL', 'MDMALL'])
给
ok: [test_01] => {
"msg": []
}
ok: [test_03] => {
"msg": []
}
ok: [test_02] => {
"msg": [
"PEGAALL"
]
}
ok: [test_02] => {
"msg": "welcome"
}
见特殊变量
"group_names: List of groups the current host is part of."
对于 hosts
test_01
并test_03
没有intersect。结果是一个空列表,False
在when条件下计算结果。对于主机
test_02
,相交是包含一项的列表;在when条件下PEGAALL
计算的组的名称。True
推荐阅读
- python - 使用选择规则将两列字符串数据合二为一
- python - 带有字典的嵌套 FOR 循环。如何从第一个 FOR 使用的值开始检查第二个 FOR
- internet-explorer - 在没有 Adobe Flash 的 Internet Explorer 中使用网络摄像头拍照
- azure-active-directory - 在 Blazor 服务器中使用 Identity.Web
- json - 如何从 postgres 的 jsonb 列中检索多个数据?
- java - 如何使用 Java 等待元素在 Selenium 较新版本中可见?
- c++ - Cmake 构建两个项目
- prolog - 在prolog中找到一条循环路径
- javascript - Visual Studio Code - 在保存时编译 Javascript
- python - 我无法在 python 中使用 json.loads() 从文件中加载字典