从Ansible结构中获取值

从Ansible结构中获取值,ansible,Ansible,使用调试运行playbook时,我有以下输出: TASK: [debug lb data] *********************************** ok: [localhost] => { "var": { "lb": { "balancer": { "algorithm": "LEAST_CONNECTIONS", "contentCaching": {

使用调试运行playbook时,我有以下输出:

TASK: [debug lb data]    ***********************************
ok: [localhost] => {
    "var": {
        "lb": {
            "balancer": {
                "algorithm": "LEAST_CONNECTIONS",
                "contentCaching": {
                    "enabled": false
                }
                "virtual_ips": [
                    {
                         "address": "10.0.0.1",
                         "id": 123,
                         "ip_version": "IPV4",
                         "type": "PUBLIC"
                    }
                ]
            }
     }
}
如何获取变量“地址”,以便以后可以将其用作另一个变量的输入

例如:

- name: Create A record
  local_action:
    data: "{{ address }}"
    type: A

谢谢。

您可以这样使用它:

-名称:创建记录
地方行动:
数据:“{lb.balancer.virtual_ips.address}”
类型:A

这是来自ansible docs的文档:

访问复杂变量数据

我们已经在文档中讨论了更高一点的事实

提供的一些事实,如网络信息,可以作为嵌套数据结构提供。要访问它们,一个简单的{{foo}}是不够的,但仍然很容易做到。下面是我们获取IP地址的方法:

   {{ ansible_eth0["ipv4"]["address"] }}
或者:

   {{ ansible_eth0.ipv4.address }}
类似地,这是我们访问数组的第一个元素的方式:

   {{ foo[0] }}

我还发现这也很有效:

{{hostvars[inventory_hostname]['ansible_dns']['nameservers'][0]}}
使用

{{hostvars[inventory_hostname]['ansible_dns']['nameservers']}}
将包括一些额外的恼人字符:-)