NETBOX как dynamic inventory для Ansible — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
| (не показано 9 промежуточных версий этого же участника) | |||
| Строка 11: | Строка 11: | ||
Подготавливаем ansible.cfg и Pipfile с зависимостями<br> | Подготавливаем ansible.cfg и Pipfile с зависимостями<br> | ||
| − | + | ansible.cfg<br><spoiler> | |
[defaults] | [defaults] | ||
roles_path = ../../roles:roles<br> | roles_path = ../../roles:roles<br> | ||
| Строка 40: | Строка 40: | ||
</spoiler> | </spoiler> | ||
| + | Pipfile<br> | ||
<spoiler> | <spoiler> | ||
[ [source] ] | [ [source] ] | ||
| Строка 65: | Строка 66: | ||
"requests[socks]"="==2.26.0"<br> | "requests[socks]"="==2.26.0"<br> | ||
pywinrm = "==0.5.0" | pywinrm = "==0.5.0" | ||
| + | setuptools = "==80.9.0" | ||
[dev-packages] | [dev-packages] | ||
| Строка 88: | Строка 90: | ||
Клонируем репу с базовой ролью | Клонируем репу с базовой ролью | ||
| − | Создаём виртуальное окружение | + | Создаём виртуальное окружение(поставим пару пакетов которые пригодятся) |
cd /root/ansible/playbooks/base | cd /root/ansible/playbooks/base | ||
pipenv install | pipenv install | ||
pipenv shell | pipenv shell | ||
| + | pip install dotenv loguru | ||
| − | Приводим <code>/inventories/iwad/netbox-inventory.yaml</code> примерно к такому виду | + | Переходим к подключению динамического инвентаря. Приводим <code>/inventories/iwad/netbox-inventory.yaml</code> примерно к такому виду |
--- | --- | ||
plugin: netbox.netbox.nb_inventory | plugin: netbox.netbox.nb_inventory | ||
| Строка 118: | Строка 121: | ||
| − | + | Проверяем что инвентарь парсится(конечно же в netbox уже должны быть внесены устройства) | |
ansible-inventory -i ../../inventories/iwad --graph | ansible-inventory -i ../../inventories/iwad --graph | ||
@all: | @all: | ||
Текущая версия на 17:47, 23 марта 2026
Для начала подготовим виртуалочку для управления инфрой через ansible. Использовать будем Debian 12
Ставим python3.11 (т.к. он будет в зависимостях в нашем Pipfile) и pip
apt install python3.11-full apt install pip
Устанавливаем pipenv
pip install pipenv --break-system-packages
Подготавливаем ansible.cfg и Pipfile с зависимостями
ansible.cfg
Spoiler
Pipfile
Spoiler
Создадим директории и положим конфиги и прочее
/inventories /iwad /group_vars all.yaml netbox-inventory.yaml /playbooks /base ansible.cfg base.yaml Pipfile /roles /base
Клонируем репу с базовой ролью
Создаём виртуальное окружение(поставим пару пакетов которые пригодятся)
cd /root/ansible/playbooks/base pipenv install pipenv shell pip install dotenv loguru
Переходим к подключению динамического инвентаря. Приводим /inventories/iwad/netbox-inventory.yaml примерно к такому виду
--- plugin: netbox.netbox.nb_inventory api_endpoint: https://netbox.iwad.ru token: fc58b84c25grbc5506627a8c32r32a397213ee validate_certs: false config_context: false group_names_raw: True group_by: - device_roles compose: nbx_role: role.name primary_ip_address: primary_ip.address query_filters: - status: 'active' - cf_device_class: server - tenant: org_iwad device_query_filters: - has_primary_ip: 'true' vm_query_filters: - has_primary_ip: 'true'
Проверяем что инвентарь парсится(конечно же в netbox уже должны быть внесены устройства)
ansible-inventory -i ../../inventories/iwad --graph @all: |--@ungrouped: |--@proxmox: | |--pve36.iwad.ru | |--pve37.iwad.ru | |--pve38.iwad.ru | |--pve42.iwad.ru
или
ansible-inventory -i ../../inventories/iwad --list
кладём id_rsa поьзователю ansible(не умно, признаю) и пробуем катать базовую роль
РАБОТАЕМ!!!