โดยสรุป คุณจะได้รับผลลัพธ์ด้วยนิพจน์เดียวโดยไม่มีการวนซ้ำ
Playbook ต่อไปนี้:
---
- โฮสต์: localhost
Gather_facts: เท็จ
วาร์:
# ข้อมูลต้นฉบับของคุณในบรรทัดเดียวเพื่อความชัดเจน
result_clusters:
หยุด: >-
{"clusters":{"Cluster_1":{"hosts":[{"folder":"/path","name":"host1.domain.com"},{"folder":"/path"," name":"host2.domain.com"}]},"Cluster_2":{"hosts":[{"folder":"/path","name":"host3.domain.com"},{"folder ":"/path","name":"host4.domain.com"}]}}}
งาน:
- ชื่อ: รับผลลัพธ์ที่คาดหวังจากข้อมูล json ในงานเดียว
วาร์:
สอบถาม: >-
[].{ชื่อ: คีย์ โฮสต์: เข้าร่วม(', ', value.hosts[].name)}
คลัสเตอร์: "{{ (result_clusters.stdout | from_json).clusters }}"
แก้ปัญหา:
msg: "{{ คลัสเตอร์ | dict2items | json_query(query) }}"
ให้:
เล่น [โฮสต์ในพื้นที่] *********************************************** ********
TASK [รับผลลัพธ์ที่คาดหวังจากข้อมูล json ในงานเดียว] *********
ตกลง: [localhost] => {
"ข้อความ": [
{
"โฮสต์": "host1.domain.com, host2.domain.com",
"ชื่อ": "Cluster_1"
},
{
"โฮสต์": "host3.domain.com, host4.domain.com",
"ชื่อ": "Cluster_2"
}
]
}
เล่น RECAP ************************************************ ************
localhost: ตกลง = 1 เปลี่ยนแปลง = 0 ไม่สามารถเข้าถึงได้ = 0 ล้มเหลว = 0 ข้าม = 0 ช่วยแล้ว = 0 ละเว้น = 0
หมายเหตุ: แม้ว่าข้อมูลข้างต้นจะให้ผลลัพธ์ที่คุณขออย่างแม่นยำมาก แต่ฉันสงสัยอย่างยิ่งว่าคุณกำลังมองหาผลลัพธ์ที่แตกต่างออกไปเล็กน้อย แทนที่ข้อความค้นหาด้านบนด้วย:
สอบถาม: >-
[].{ชื่อ: คีย์ โฮสต์: value.hosts[].name}
จะให้สิ่งนี้แทน:
TASK [รับผลลัพธ์ที่คาดหวังจากข้อมูล json ในงานเดียว] ************************************ ************************************************** ************************************************** **********************************
ตกลง: [localhost] => {
"ข้อความ": [
{
"โฮสต์": [
"host1.domain.com",
"host2.domain.com"
],
"ชื่อ": "Cluster_1"
},
{
"โฮสต์": [
"host3.domain.com",
"host4.domain.com"
],
"ชื่อ": "Cluster_2"
}
]
}