/ansible_netbox_demo

Demo of Ansible from NetBox

Primary LanguagePython

Ansible NetBox Demo

Newer Library Notice

Most of my day to day effort and work is with Nautobot. I find this more friendly for the immediate goals in front of me. That said, please take a look at the Nautobot version of this repo: https://github.com/jvanderaa/nautobot_ansible_import

Feel free to take a look at the Nautobot open source project itself - https://nautobot.readthedocs.io.

Archival Notice

This project is not actively being maintained. If there is an issue and there is time available, I will work on it. Alternatively if you wish to submit an issue and PR to the repo, I welcome it.

Nautobot

Nautobot is a fork from NetBox 2.10 to take the capabilities even further in the network automation space. Take a look at the info on the NTC home page. The same features that have been part of NetBox are still around and will evolve. If you want to take a test drive of Nautobot, take a look at https://demo.nautobot.com.

Link to recording

Thanks to the Red Hat team that had the recording done of this. You can find it on YouTube at https://www.youtube.com/watch?v=GyQf5F0gr3w.

Most Recent Updates

I have moved all of the data that was previously configured to be added to NetBox within the 00_setup_netbox_devices.yml file to be configured in the all.yml. If looking to bootstrap your NetBox environment, this is the main information that will need to get updated.

Important Note

This is NOT meant to be run constantly in your environment. Please do not use as such. This is a bootstrapping setup, to get you running. The intent of NetBox is to become the Source of Truth for your environment. If all you are doing is constantly updating NetBox from your devices, then the source of truth is the network device, not NetBox. Please be working to get your environment to the state that you have a Source of Truth that is NOT your device.

Start

To setup NetBox, checkout https://netbox.readthedocs.io Setup an API Key in the upper right admin panel Generate an environment of devices to use

Requirements

  1. NetBox Installation
  2. Docker Desktop on system
  3. If running on Windows, you do not have make. The Makefile is just shortcuts to be used. Take a look at the Makefile for the exact commands that replace the specific make commands.

How to

  1. Setup NetBox (see the beginning)
  2. Setup a new file named .env that contains information about your NetBox environment for the container. See below for example config
  3. Update your group_vars/all.yml, group_vars/ and host_vars/ accordingly with credentials to connect to the devices, see below for example config
  4. Create a container - make build
  5. Enter the container - make cli
  6. Setup NetBox with executing ansible-playbook 00_setup_netbox_devices.yml
  7. Setup Devices Into Netbox ansible-playbook 01_setup_devices.yml -i start_inventory replace start_inventory with whatever your static inventory file is
  8. Setup Interfaces using dynamic inventory ansible-playbook 02_setup_interfaces.yml -i netbox_inventory.yml
  9. Run the audit ansible-playbook 03_audit_netbox.yml -i netbox_inventory.yml where you have updated the information in the netbox_inventory.yml file

ENV File setup

NETBOX_API_KEY=<NetBox Key>
NETBOX_URL=<URL of NetBox>

Group Vars, Host Vars

---
ansible_user: <username>
ansible_password: <password>
ansible_network_os: <corresponding Ansible OS>

hostvars will only contain information overriding data points. In the example, the only thing set in the host vars section is:

---
rack_location: 41

URLs

Helpful URLs have a few other links that may be helpful.