If you manage many of dedicated servers and networks, you will need a "Source of Truth" to do that efficiently. From time to time I try to find a better solution to do that.
So I decided to give "NetBox" a try! But what is NetBox?
NetBox is an open source web application designed to help manage and document computer networks. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It encompasses the following aspects of network management:
- IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs
- Equipment racks - Organized by group and site
- Devices - Types of devices and where they are installed
- Connections - Network, console, and power connections among devices
- Data circuits - Long-haul communications circuits and providers
- Secrets - Encrypted storage of sensitive credentials
I really like it, and even I started to write a Python script to use Netbox as Ansible inventory! (Ansible dynamic inventory).
But when I started try it on Docker, I found the project uses Docker compose v2! And till time of writing this words, Rancher doesn't support v2 of Docker compose! (it's still beta) So I needed to do some modifications on the original NetBox Docker compose file.
So here is docker-compose.yml that works with Rancher. Simply I moved "netbox" container to be part of "nginx" as "sidekick", so both can share the same volume. And this is the same one the project provides.
nginx: labels: command: nginx -g 'daemon off;' -c /etc/netbox-nginx/nginx.conf image: nginx:1.11.1-alpine links: - 'postgres:postgres' - 'netbox:netbox' volumes_from: - netbox netbox: io.rancher.sidekicks: nginx environment: ALLOWED_HOSTS: localhost DB_HOST: postgres DB_NAME: netbox DB_PASSWORD: J5brHrAXFLQSif0K DB_USER: netbox EMAIL_FROM: email@example.com EMAIL_PASSWORD: bar EMAIL_PORT: '25' EMAIL_SERVER: localhost EMAIL_TIMEOUT: '10' EMAIL_USERNAME: foo NETBOX_PASSWORD: guest NETBOX_USERNAME: guest SECRET_KEY: r8OwDznj!!dci#P9ghmRfdu1Ysxm0AiPeDCQhKE+N_rClfWNj SUPERUSER_EMAIL: firstname.lastname@example.org SUPERUSER_NAME: admin SUPERUSER_PASSWORD: admin entrypoint: - /docker-entrypoint.sh image: digitalocean/netbox links: - 'postgres:' working_dir: /opt/netbox volumes: - netbox-static-files:/opt/netbox/netbox/static postgres: environment: POSTGRES_DB: netbox POSTGRES_PASSWORD: J5brHrAXFLQSif0K POSTGRES_USER: netbox image: postgres:9.6
After I tested it, I think Netbox is pretty nice and it's very promising. Maybe there are many things that are missing, but its dev team is still working on a lot of enhancements!