Ansible make list from two list (attribute to first list from two)

Viewed 74

lists can be different by length. No foreign keys between them. I just want to make big list from two lists (multiply records?)

vars:

list1:

- item: "alpha"
  key1: "value1"
  key2: "value2"
- item: "beta"
  key1: "value1"
  key2: "value2"

list2:

- add_key_to_each_1: "to_each_value_1"
- add_key_to_each_2: "to_each_value_2"

i want to get follow list3 by some task (set_fact):

- item: "alpha"
  key1: "value1"
  key2: "value2"
  add_key_to_each_1: "to_each_value_1"

- item: "beta"
  key1: "value1"
  key2: "value2"
  add_key_to_each_1: "to_each_value_1"

- item: "alpha"
  key1: "value1"
  key2: "value2"
  add_key_to_each_2: "to_each_value_2"

- item: "beta"
  key1: "value1"
  key2: "value2"
  add_key_to_each_2: "to_each_value_2"
1 Answers

The task below does the job

    - set_fact:
        list3: "{{ list3|default([]) + [item.0|combine(item.1)] }}"
      with_cartesian:
        - "{{ list2 }}"
        - "{{ list1 }}"
    - debug:
        var: list3

gives

  list3:
  - add_key_to_each_1: to_each_value_1
    item: alpha
    key1: value1
    key2: value2
  - add_key_to_each_1: to_each_value_1
    item: beta
    key1: value1
    key2: value2
  - add_key_to_each_2: to_each_value_2
    item: alpha
    key1: value1
    key2: value2
  - add_key_to_each_2: to_each_value_2
    item: beta
    key1: value1
    key2: value2
Related