NETBOX как dynamic inventory для Ansible

Материал из megapuper
Перейти к: навигация, поиск

Подготовим виртуалочку для управления инфрой через ansible


Ставим python3.11 (т.к. он в зависимостях в Pipfile) и pip

apt install python3.11-full
apt install pip


Устанавливаем pipenv

pip install pipenv --break-system-packages

Подготавливаем ansible.cfg и Pipfile с зависимостями

Создадим директории и положим конфиги и прочее

/inventories
	/iwad
		/group_vars
			all.yaml
		netbox-inventory.yaml
/playbooks
	/base
		ansible.cfg
		base.yaml
		Pipfile
/roles
	/base


Install the NetBox Ansible Collection.

Before using this collection, you need to install it with the Ansible Galaxy command-line tool

ansible-galaxy collection install netbox.netbox


Set environment variables for your NetBox API token and URL of your NetBox instance:

export NETBOX_API=<YOUR_NETBOX_URL> (note - must include http:// or https://)
export NETBOX_TOKEN=<YOUR_NETBOX_API_TOKEN>


Приводим конфиг примерно к такому виду

---
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(не умно, признаю) и пробуем катать базовую роль

РАБОТАЕМ!!!


https://netboxlabs.com/docs/integrations/tool-integrations/netbox-ansible-collection/#use-case-1---netbox-as-a-dynamic-inventory-source-for-ansible

https://docs.ansible.com/projects/ansible/latest/collections/netbox/netbox/nb_inventory_inventory.html

https://habr.com/ru/companies/ruvds/articles/962710/

https://demo.netbox.dev/api/schema/swagger-ui/#/