剧本:
- set_fact:
list_1: "{{ ( lookup('file', '../../vars/ontap/usage2cluster.yml') | from_yaml ).sap }}"
- debug:
msg: "{{ list_1 }}"
- set_fact:
list_2: "{{ groups | dict2items | selectattr('key', 'equalto', 'ontap_' + storage_stage) }}"
- debug:
msg: "{{ list_2 }}"
我得到的输出:
TASK [set_fact] *******************************************************************************************************************************************
ok: [localhost]
TASK [debug] **********************************************************************************************************************************************
ok: [localhost] =>
msg:
- fas09
- fas10
- fas07
- fas08
TASK [set_fact] *******************************************************************************************************************************************
ok: [localhost]
TASK [debug] **********************************************************************************************************************************************
ok: [localhost] =>
msg:
- key: ontap_p
value:
- fas01
- fas02
- fas03
- fas04
- fas07
- fas08
- fas13
- fas14
- fas15
- fas16
我确实尝试过这个......它有效,但我想直接在
set_fact
行中制作它:list_2
如果可能的话,我想要在第二个
- set_fact:
list_1: "{{ ( lookup('file', '../../vars/ontap/usage2cluster.yml') | from_yaml ).sap }}"
- debug:
msg: "{{ list_1 }}"
- set_fact:
list_2: "{{ groups | dict2items | selectattr('key', 'equalto', 'ontap_' + storage_stage) | items2dict }}"
- debug:
msg: "{{ list_2.values() | flatten | intersect(list_1) }}"
中直接在两个变量之间相交:
set_fact
通过索引获取list_2
shell> cat hosts
localhost ansible_connection=local
[ontap_99]
fas07
fas08
fas13
fas14
给予
storage_stage: '99'
list_2: "{{ groups['ontap_' + storage_stage] }}"
必须平坦。下面相交
list_2: [fas07, fas08, fas13, fas14]
给你想要的东西
- debug:
msg: "{{ list_2|intersect(list_1) }}"
msg:
- fas07
- fas08