Я сталкиваюсь с проблемой (функцией?), Описанной в Ansible приоритет групповых переменных , возможно, потому, что я неправильно структурировал свой инвентарь.
Идея была иметь две задачи, которые применяются ко всем «маршрутизаторам» или «межсетевым экранам», как определено в перечне. Эта часть работает нормально - Ansible правильно анализирует инвентарь и различает их.
Проблема состоит в том, что из-за способа анализа инвентаря используется тот же ansible_user и ansible_password для каждой группы клиентов. Что, очевидно, имеет смысл, основываясь на документации:
Когда группы одного и того же родительского / дочернего уровня объединяются, это делается в алфавитном порядке, а последняя загруженная группа перезаписывает предыдущие группы. Например, a_group будет объединена с переменными b_group и b_group, которые будут совпадать с переменными в a_group.
Кто-нибудь может посоветовать, как мне это исправить? Если я изменю Подгруппы «маршрутизаторы» и «брандмауэры» должны быть уникальными, например, custA_routers, custB_routers, тогда они будут вести себя как положено. Однако тогда я думаю, что должен написать задачи, ограниченные каждой из этих подгрупп. Обратите внимание, что все хосты являются уникальными IP-адресами.
Playbook:
---
- name: Check routers
hosts: routers
tasks:
- name: Do stuff.
<commands>
- name: Check firewalls
hosts: firewalls
tasks:
- name: Do stuff.
<commands>
Инвентарь:
all:
vars:
ansible_connection: network_cli
ansible_network_os: ios
children:
customerOne:
vars:
ansible_user: userOne
ansible_password: <vaulted pass>
children:
routers:
hosts:
x.x.x.x
y.y.y.y
firewalls:
vars:
ansible_network_os: asa
hosts:
z.z.z.z
customerTwo:
vars:
ansible_user: userTwo
ansible_password: <vaulted pass>
children:
routers:
hosts:
x.x.x.x
y.y.y.y
firewalls:
vars:
ansible_network_os: asa
hosts:
z.z.z.z