Мне нужно извлечь IPv4-адреса для определенного интерфейса из hostvars в шаблоне Ansible Jinja2 без использования циклов.
Попытка извлечь объект ansible_eth1 из hostvars успешна, и Ansible предоставляет мне всю информацию об интерфейсе eth1:
- debug:
msg: "{{ groups['my_hosts'] | map('extract', hostvars, 'ansible_eth1') | join(', ') }}"
TASK [my_task : debug] *****************************************************************************************************************************************************************************************************
ok: [server1] => {
"msg": [
{
"active": true,
"device": "eth1",
...
"ipv4": {
"address": "192.168.56.15",
"broadcast": "192.168.56.255",
"netmask": "255.255.255.0",
"network": "192.168.56.0"
},
...
Но если я попытаюсь извлечь вложенный объект -'ipv4.address' - возвращает пустой список:
- debug:
msg: "{{ groups['my_hosts'] | map('extract', hostvars, 'ansible_eth1.ipv4.address') | join(', ') }}"
TASK [my_task : debug] *****************************************************************************************************************************************************************************************************
ok: [server1] => {
"msg": ", "
}
ok: [server2] => {
"msg": ", "
}
Возможно ли это?