Ansible dynamic inventory script for Netbox
Project description
ToC
Intro
This script uses NetBox as a dynamic inventory for Ansible. Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. It’s nice, modern, and has good APIs … so it’s a pretty nice option to serve as a “Source of Truth”.
You can group servers as you want and based on what you have in Netbox, you can select fields as groups or as vars for hosts. And you can use default fields or custom fields.
Compatibility
This script works with netbox >= v1.6, but most probably it will work with all netbox v1.0 and above.
Grouping
Server could be grouped by any section in Netbox, e.g. you can group hosts by “site, “rack”, “role”, “platform”, or any other section in Netbox (please remember, right now you need to use the names as in API not in UI).
So if you have a “site” called “US-East”, in Ansible you will get a group is called “US-East” has all hosts in that site.
If that section is a default section you need to put it under group_by.default if it is a custom section put it under group_by.custom.
Here the servers will be grouped based on platform. So if you have “Ubuntu” and “CentOS” as platforms in Netbox, you will have 2 groups of servers that using that systems.
group_by: default: - platform
Hosts variables
Netbox sections could be used as variables for hosts! e.g. you could use the IP of the host in Netbox as ansible_ssh_host, or use a custom field as well.
There are 3 sections here, first type is IP, second one is General, and finally Custom.
Variables are defined as Key: Value. The key is what will be in Ansible and value comes from Netbox.
Here primary_ip will be used as value for ansible_ssh_host.
hosts_vars: ip: ansible_ssh_host: primary_ip
Options
$ netbox.py -h usage: netbox.py [-h] [-c CONFIG_FILE] [--list] [--host HOST] optional arguments: -h, --help show this help message and exit -c CONFIG_FILE, --config-file CONFIG_FILE Path for script's configuration. Also "NETBOX_CONFIG_FILE" could be used as env var to set conf file path. (default: netbox.yml) --list Print all hosts with vars as Ansible dynamic inventory syntax. (default: False) --host HOST Print specific host vars as Ansible dynamic inventory syntax. (default: None)
You can also set config file path through environment variable NETBOX_CONFIG_FILE.
Usage
$ ansible all -i netbox.py -m ping
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ansible-netbox-inventory-1.0.1.tar.gz
.
File metadata
- Download URL: ansible-netbox-inventory-1.0.1.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b305ef594b39e4a0b264459d0419f9f9b20ba3c483386dd8a6dd82c2076030b8 |
|
MD5 | 68c1715980fff0cace1f9c2bc097e966 |
|
BLAKE2b-256 | f6dbf49ee07e07cdde5696c95f514ad3d52b407bae5240941133fc34f057374f |