使用debug运行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
谢谢。
答案 0 :(得分:0)
你可以像这样使用它:
- name: Create A record
local_action:
data: "{{ lb.balancer.virtual_ips.address }}"
type: A
这是来自ansible docs的文档:
访问复杂的可变数据
我们已经在文档中谈到了更高的事实。
某些提供的事实(如网络信息)可用作嵌套数据结构。要访问它们,一个简单的{{foo}}是不够的,但它仍然很容易做到。以下是我们获取IP地址的方式:
{{ ansible_eth0["ipv4"]["address"] }}
或者:
{{ ansible_eth0.ipv4.address }}
同样,这是我们访问数组的第一个元素的方式:
{{ foo[0] }}
答案 1 :(得分:0)
我还发现这很好用:
{{hostvars[inventory_hostname]['ansible_dns']['nameservers'][0]}}
使用
{{hostvars[inventory_hostname]['ansible_dns']['nameservers']}}
将包括一些其他令人讨厌的字符:-)