devices:
children:
abcgroup:
children:
xyzgroup:
children:
group1:
hosts:
device509:
ansible_ssh_host: 1.1.1.1
device510:
ansible_ssh_host: 2.2.2.2
group2:
hosts:
devcice609:
ansible_ssh_host: 3.3.3.3
device610:
ansible_ssh_host: 4.4.4.4
defgroup:
hosts:
device0508:
ansible_ssh_host: 30.30.30.30
device0608:
ansible_ssh_host: 31.31.31.31
мой шаблон jinja2
peer-keepalive destination {% if 'group1' in group_names %}{{ansible_ssh_host[1]}} source {{ansible_ssh_host}} {% endif %} peer-keepalive destination {% if 'group2' in group_names %}{{ansible_ssh_host[1]}} source {{ansible_ssh_host}} {% endif %}
желаемый результат или желаемый результат
on device509 i should get below output
peer-keepalive destination 2.2.2.2 source 1.1.1.1
on device510 i should get below output
peer-keepalive destination 1.1.1.1 source 2.2.2.2
on device609 i should get below output
peer-keepalive destination 4.4.4.4 source 3.3.3.3
on device610 i should get below output
peer-keepalive destination 3.3.3.3 source 4.4.4.4
вывод, который я получаю на каждом устройстве, приведен ниже, мой шаблон jinja2 неверен, я получаю точку (.)
on device509 i get below peer-keepalive destination . source 1.1.1.1 device510 i get below peer-keepalive destination . source 2.2.2.2 on device609 i get below peer-keepalive destination . source 3.3.3.3 device610 i get below peer-keepalive destination . source 4.4.4.4
как это исправить
.
Ваше требование на самом деле совсем не ясно. Для источника это довольно просто: вы хотите использовать текущий IP-адрес хоста. Но как получить IP-адрес назначения? - person Zeitounator   schedule 23.02.2021device509
принадлежит уже к 5 группам в вашем инвентаре? Как вы будете различатьgroup1
иdevice
? Мои 2 цента: если вы проектируете пары, просто добавьте переменнуюnetwork_peer: deviceXXX
для каждого устройства. Во время работы на любом устройстве вы можете получить доступ к любому значению на узле в словареhostvars[network_peer]
. - person Zeitounator   schedule 23.02.2021