- 10 Jan 2025
-
DarkLight
-
PDF
NetBox
- Updated on 10 Jan 2025
-
DarkLight
-
PDF
Steps to Create a Dynamic Inventory
To create and manage device inventory via plugin, several steps are required. This guide covers the NetBox plugin.
Related Reading: NetBox Inventory Source
Step 1. Install the plugin
There is an ansible-galaxy
command that can install the plugin into the IAG server. You will likely have to incorporate this command into your IAG build plan so that you do not have to do this as a manual step. For Netbox the command looks like this:
ansible-galaxy collection install netbox.netbox
Step 2. Configure Ansible to use the plugin
There are several ways to accomplish this step. Below is a suggested method for enabling a plugin. Make sure the interpreter_python
is appropriate for the environment.
/etc/ansible/ansible.cfg
This example enables the NetBox dynamic inventory plugin.
[defaults]
collections_path=/opt/automation-gateway/ansible/collections:/usr/share/ansible/collections
host_key_checking = False
timeout = 900
# This might need adjusting depending on specifics
interpreter_python = /bin/python3.9
INVENTORY_ENABLED = "netbox.netbot.nb_inventory"
[persistent_connection]
command_timeout = 3600
connect_timeout = 900
Step 3. Configure the host file
Use the NetBox documentation to determine the most appropriate way to configure the plugin to connect to and query from the source of truth system. The NetBox plugin configuration below connects to the public NetBox demo and returns all devices found there.
Be sure to specify the host file as a .yml
file
/opt/automation-gateway/ansible/inventory/hosts.yml
---
plugin: netbox.netbox.nb_inventory
# This is the public nautobot demo website. You will need to create a tempory
# account to create a API token. Admin>Authentication>API Tokens
api_endpoint: "https://demo.netbox.dev"
token: aaaaaaaaaaaaaaaaaaaaaaaaaa
validate_certs: False
config_context: False
group_by:
- device_roles
Step 4. Confirm the plugin is working
Before invoking the plugin from IAG, the plugin should be tested directly from the command line using direct Ansible capability. This command will invoke the plugin and return the devices it finds.
ansible-inventory -vvv --list -i <path-to-plugin-host-file>
Step 5. Restart IAG
Restarting IAG should trigger the plugin to execute. Once execution finishes, you should see Nautobot devices in the Ansible inventory.