Есть ли способ l oop через словарь ansible для присвоения других ansible значений словаря?
У меня в group_vars / all есть следующее:
domain_controllers:
dc0:
hostname: "dc0"
ip_address: "192.168.1.0"
dc1:
hostname: "dc1"
ip_address: "192.168.1.1"
dc2:
hostanme: "dc2"
ip_address: "192.168.1.2"
У меня есть общая c роль keepalived, которая настраивает keepalived, который роль сервера использует для создания VIP для этих контроллеров домена.
Ниже приведен мой roles/servers/forward/vars.yml
, который роль keepalived использует для создания keepalived .conf.
virtual_server:
- virutal_server_ip: "192.168.1.10"
virtual_server_port: 389
...
real_servers:
- real_ip: "192.168.1.0"
real_port: 389
description: "dc0"
...
- real_ip: "192.168.1.1"
real_port: 389
description: "dc1"
...
- real_ip: "192.168.1.2"
real_port: 389
description: "dc2"
...
- virtual_server_ip: "192.168.1.10"
virtual_server_port: 636
...
real_servers:
- real_ip: "192.168.1.0"
real_port: 636
description: "dc0"
...
- real_ip: "192.168.1.1"
real_port: 636
description: "dc1"
...
- real_ip: "192.168.1.2"
real_port: 636
description: "dc2"
...
У меня уже есть форматирование jinja в роли keepalived для построения /etc/keepalived.conf
на основе этих переменных.
Я хочу назначить эти переменные на основе содержимое словаря domain_controllers
. Как я могу использовать set_facts
для назначения такого большого вложенного словаря?
Я хотел бы просто от l oop до domain_controllers
, потому что я хотел бы просто обновить свой group_vars/all
при обновлении и / или перейти на новые контроллеры домена, поскольку у меня также есть другие учебники, которые используют эту переменную.
Кроме того, можно назначить эти переменные в vars/main.yml
, а не через задачу set_facts
?