แปลงพจนานุกรม การจัดการ แรก
- set_fact:
mgmt: "{{ mgmt|d({})|combine({item.key: {'Property4': item.value}}) }}"
วนซ้ำ: "{{ การจัดการ|dict2items }}"
ให้
ผู้จัดการ:
เซิร์ฟเวอร์ 1:
คุณสมบัติ 4: ip1_addr
เซิร์ฟเวอร์ 2:
คุณสมบัติ 4: ip2_addr
แล้ว รวมกัน พจนานุกรม
- set_fact:
เซิร์ฟเวอร์: "{{ เซิร์ฟเวอร์|รวมกัน(mgmt, recursive=True) }}"
ให้ผลลัพธ์ที่ต้องการ
เซิร์ฟเวอร์:
เซิร์ฟเวอร์ 1:
ทรัพย์สิน1:อ
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
คุณสมบัติ 4: ip1_addr
เซิร์ฟเวอร์ 2:
ทรัพย์สิน1:อ
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
คุณสมบัติ 4: ip2_addr
หากคุณต้องการทำซ้ำผลลัพธ์ การแปลงพจนานุกรมทั้งสองเป็นรายการจะง่ายกว่า
- set_fact:
mgmt: "{{ mgmt|d([]) + [{'เซิร์ฟเวอร์': item.key,
'Property4': item.value}] }}"
วนซ้ำ: "{{ การจัดการ|dict2items }}"
- set_fact:
srvs: "{{ srvs|d([]) + [{'server': item.key}|combine(item.value)] }}"
วนซ้ำ: "{{ เซิร์ฟเวอร์|dict2items }}"
ให้
ผู้จัดการ:
- Property4: ip1_addr
เซิร์ฟเวอร์: เซิร์ฟเวอร์1
- Property4: ip2_addr
เซิร์ฟเวอร์: เซิร์ฟเวอร์2
srv:
- Property1:ก
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
เซิร์ฟเวอร์: เซิร์ฟเวอร์1
- Property1:อ
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
เซิร์ฟเวอร์: เซิร์ฟเวอร์2
จากนั้นใช้ ชุมชนทั่วไป กรอง list_mergeby
- แก้ปัญหา:
msg: "{{ srvs|lists_mergeby(mgmt, 'เซิร์ฟเวอร์') }}"
ให้
ข้อความ:
- Property1:อ
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
คุณสมบัติ 4: ip1_addr
เซิร์ฟเวอร์: เซิร์ฟเวอร์1
- Property1:ก
พร็อพเพอร์ตี้2:บ
พร็อพเพอร์ตี้3:ค
คุณสมบัติ 4: ip2_addr
เซิร์ฟเวอร์: เซิร์ฟเวอร์2