可以将这两个列表内联相交吗?

问题描述 投票:0回答:1

剧本:

    - 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


ansible jinja2
1个回答
0
投票
mre

)库存用于测试 msg: - fas07 - fas08

通过索引获取
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

必须平坦。下面相交 list_2: [fas07, fas08, fas13, fas14]

给你想要的东西

- debug: msg: "{{ list_2|intersect(list_1) }}"



用于测试的完整剧本示例

msg: - fas07 - fas08

    
© www.soinside.com 2019 - 2024. All rights reserved.