从Ansible结构中获取值
使用调试运行playbook时,我有以下输出:从Ansible结构中获取值,ansible,Ansible,使用调试运行playbook时,我有以下输出: TASK: [debug lb data] *********************************** ok: [localhost] => { "var": { "lb": { "balancer": { "algorithm": "LEAST_CONNECTIONS", "contentCaching": {
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']}}
将包括一些额外的恼人字符:-)