ansible的新手,学习如何处理任务返回的数据。我正在尝试从以下返回的数据(这是一个片段)中提取IP地址:
"vmfacts": {
"changed": false,
"failed": false,
"virtual_machines": {
"Alpha-0": {
"cluster": "GPLAB-Compute01",
"esxi_hostname": "gplab-esxi02.gplab.com",
"guest_fullname": "Other Linux (64-bit)",
"ip_address": "192.168.0.1",
如果我运行
- debug:
var: vmfacts.virtual_machines
我得到了VM的完整词典,这很好。但是我如何获得Alpha-0 VM的IP地址?我尝试了多种变体来获取值,但似乎无法获得它。我敢肯定这很简单!
答案 0 :(得分:1)
有两种方法可以解决嵌套字典中的子键。如您所见,可以通过用点分隔每个键来引用一个子键。但是,这实际上是简写,而且在各种情况下它都不起作用。
我猜您已经尝试过点方法,并且遇到了问题,因为“ Alpha-0”包含一个“-”,这是YAML中的重要字符,用于标识列表项。
长格式版本是用['']
包装每个键(如果使用的是包含键名的变量,则不需要单引号),因此在您的情况下,这应该可行:
- debug:
var: vmfacts['virtual_machines']['Alpha-0']['ip_address']