{
"hostvars": {
"192.168.200.42": {
"all_var": "ALL_VAR",
"dev_var": "DEV_VAR",
"first_var": "hello world",
"nginx_var": "NGINX_VAR"
},
"192.168.200.43": {
"all_var": "ALL_VAR",
"dev_var": "DEV_VAR",
"first_var": "hello world"
},
"192.168.200.44": {
"all_var": "ALL_VAR",
"dev_var": "DEV_VAR",
"first_var": "hello world"
}
}
}
,这种结构{1,2,3,4}这种是set类型,元素无序且唯一
顶级字典
│
└─── key: "hostvars"
│
└─── value: 字典A
│
├─── key: "192.168.200.42"
│ │
│ └─── value: 字典A1
│ ├─── key: "all_var" → value: "ALL_VAR"
│ ├─── key: "dev_var" → value: "DEV_VAR"
│ └─── ...
│
├─── key: "192.168.200.43"
│ │
│ └─── value: 字典A2
│ ├─── key: "all_var" → value: "ALL_VAR"
│ └─── ...
│
└─── key: "192.168.200.44"
│
└─── value: 字典A3
├─── key: "all_var" → value: "ALL_VAR"
└─── ...
这是一个完全合法且设计合理的三层嵌套字典,常用于表示 Ansible 的库存数据:
顶层:{"hostvars": ...}
中层:主机标识到变量集的映射 {"ip": {...}}
底层:主机具体变量 {"var_name": "value"}
它既不是列表也不是集合,而是标准的字典嵌套结构
可以将其转化为list
hostvars|dict2items 可以将字典转为对象list