Ansible-检查项目是否在列表中

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

我想比较两个列表-一个列表包含所有可用选项,第二个列表包含要选择的特定选项。例如,我有两个列表:

FullList:
  - name: "Test1"
    value1: "blabla123"
    value2: "someothervalue"
  - name: "Test2"
    value1: "blsdfsdfasfabla"
    value2: "someothervalue"
  - name: "Test3"
    value1: "sdjfbhsadbfv"
    value2: "someothervalue"
  - name: "Test4"
    value1: "sdjkfnsjkf"
    value2: "sdjkfnsjkf"

它包含所有可用元素及其属性。

而且我还有第二个带有特定键的列表,可以从整个列表中选择项目。

List1:
  - "Test2"
  - "Test3"

我想从FullList中获得List1中具有的元素

即我希望

Result:
  - name: "Test2"
    value1: "blsdfsdfasfabla"
    value2: "someothervalue"
  - name: "Test3"
    value1: "sdjfbhsadbfv"
    value2: "someothervalue"

任何帮助将不胜感激!

ansible
2个回答
1
投票

Filter selectattrtest in完成任务。例如

- set_fact:
    Result: "{{ FullList|selectattr('name', 'in', List1)|list }}"

0
投票

请尝试如下打印

  tasks:
  - debug:
     msg : "{{ item }}"
    when: item.name in List1
    loop: "{{FullList}}"

要保存到变量中,请如下使用

  - name: test
    set_fact:
     test: "{{ item }}"
    when: item.name in List1
    loop: "{{FullList}}"
© www.soinside.com 2019 - 2024. All rights reserved.