NETBOX как dynamic inventory для Ansible

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

Create and activate a Python 3 virtual environment:

python3 -m venv ./venv
source venv/bin/activate


Install Python Modules and Ansible

pip install pytz
pip install pynetbox
pip install ansible


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/#/