Tóm lại, bạn có thể nhận được kết quả của mình bằng một biểu thức duy nhất mà không cần bất kỳ vòng lặp nào.
Vở kịch sau:
---
- máy chủ: localhost
thu thập_facts: sai
lọ:
# Dữ liệu gốc của bạn trên một dòng để dễ đọc
result_cụm:
tiêu chuẩn: >-
{"cụm":{"Cụm_1":{"hosts":[{"thư mục":"/đường dẫn","tên":"host1.domain.com"},{"thư mục":"/đường dẫn"," name":"host2.domain.com"}]},"Cluster_2":{"hosts":[{"thư mục":"/path","name":"host3.domain.com"},{"thư mục ":"/path","name":"host4.domain.com"}]}}}
nhiệm vụ:
- tên: nhận đầu ra dự kiến của tôi từ dữ liệu json trong một tác vụ
lọ:
truy vấn: >-
[].{name: key, hosts: join(', ', value.hosts[].name)}
cụm: "{{ (result_cluster.stdout | from_json).cluster }}"
gỡ lỗi:
msg: "{{cụm | dict2items | json_query(query) }}"
Cung cấp:
CHƠI [máy chủ cục bộ] ************************************************ ********
NHIỆM VỤ [lấy đầu ra dự kiến của tôi từ dữ liệu json trong một tác vụ] *********
được rồi: [máy chủ cục bộ] => {
"tin nhắn": [
{
"máy chủ": "host1.domain.com, host2.domain.com",
"tên": "Cụm_1"
},
{
"máy chủ": "host3.domain.com, host4.domain.com",
"tên": "Cụm_2"
}
]
}
TÓM TẮT CHƠI *************************************************** ************
máy chủ cục bộ: ok=1 thay đổi=0 không truy cập được=0 thất bại=0 bỏ qua=0 giải cứu=0 bỏ qua=0
Lưu ý: mặc dù ở trên cung cấp rất chính xác đầu ra mà bạn yêu cầu, nhưng tôi thực sự nghi ngờ rằng bạn đang tìm kiếm một kết quả hơi khác một chút. Thay thế truy vấn trên bằng:
truy vấn: >-
[].{name: key, hosts: value.hosts[].name}
sẽ đưa ra cái này thay thế:
NHIỆM VỤ [lấy đầu ra dự kiến của tôi từ dữ liệu json trong một tác vụ] ************************************ *************************************************** *************************************************** ************************************
được rồi: [máy chủ cục bộ] => {
"tin nhắn": [
{
"máy chủ": [
"host1.domain.com",
"host2.domain.com"
],
"tên": "Cụm_1"
},
{
"máy chủ": [
"host3.domain.com",
"host4.domain.com"
],
"tên": "Cụm_2"
}
]
}