В данной статье рассмотрим установку open-source инструмента DCIM/IPAM - Netbox
NetBox - это ведущее решение для моделирования и документирования современных сетей. Сочетая традиционные дисциплины управления IP-адресами (IPAM) и управления инфраструктурой центров обработки данных (DCIM) с мощными API и расширениями, NetBox обеспечивает идеальный «источник истины» для автоматизации сети. Доступный в виде программного обеспечения с открытым исходным кодом по лицензии Apache 2.0, NetBox служит краеугольным камнем для автоматизации сети в тысячах организаций.
Основные темы:
Для своей установки Netbox я продолжу использовать среду контейнеризации Docker.
Необходимо создать нужные директории в месте хранения данных образов:
/opt/containerd/netbox-docker
Клонируем репозиторий комьюнити:
git clone -b release https://github.com/netbox-community/netbox-docker.git
В созданной директории необходимо разметить docker-compose.yaml.
Следующее содержимое помещаем в файл:
version: '3.4'
networks:
netbox:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.1.0/24 #Ваша сеть докере
gateway: 172.20.1.1
services:
netbox: &netbox
ports:
- 8236:8080 #Front end port
image: docker.io/netboxcommunity/netbox:${VERSION-v3.6-2.7.0}
depends_on:
- postgres
- redis
- redis-cache
env_file: env/netbox.env
user: 'unit:root'
healthcheck:
start_period: 60s
timeout: 3s
interval: 15s
test: "curl -f http://localhost:8080/api/ || exit 1"
volumes:
- ./configuration:/etc/netbox/config:z,ro
- netbox-media-files:/opt/netbox/netbox/media:rw
- netbox-reports-files:/opt/netbox/netbox/reports:rw
- netbox-scripts-files:/opt/netbox/netbox/scripts:rw
networks:
netbox:
ipv4_address: 172.20.1.2
netbox-worker:
<<: *netbox
ports: []
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py
- rqworker
healthcheck:
start_period: 20s
timeout: 3s
interval: 15s
test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
networks:
netbox:
ipv4_address: 172.20.1.3
netbox-housekeeping:
<<: *netbox
ports: []
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/housekeeping.sh
healthcheck:
start_period: 20s
timeout: 3s
interval: 15s
test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"
networks:
netbox:
ipv4_address: 172.20.1.4
# postgres
postgres:
image: docker.io/postgres:15-alpine
env_file: env/postgres.env
volumes:
- netbox-postgres-data:/var/lib/postgresql/data
networks:
netbox:
ipv4_address: 172.20.1.5
# redis
redis:
image: docker.io/redis:7-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
env_file: env/redis.env
volumes:
- netbox-redis-data:/data
networks:
netbox:
ipv4_address: 172.20.1.7
redis-cache:
image: docker.io/redis:7-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
env_file: env/redis-cache.env
volumes:
- netbox-redis-cache-data:/data
networks:
netbox:
ipv4_address: 172.20.1.6
volumes:
netbox-media-files:
driver: local
netbox-postgres-data:
driver: local
netbox-redis-cache-data:
driver: local
netbox-redis-data:
driver: local
netbox-reports-files:
driver: local
netbox-scripts-files:
driver: local
Далее запускаем наш контейнер:
sudo docker-compose up -d
Netbox доступен по адресу http://<IP вашего сервера>:8236 ( порт указан в конфиге docker-compose.yaml #Frontend port)
ВНИМАНИЕ!! Необходимо создать пользователя для доступ в интерфейс управления. Для этого запускаем комманду:
sudo docker compose exec netbox-netbox-1 /opt/netbox/netbox/manage.py createsuperuser
Создаем пользователя следуя инструкциям
Для установки плагинов необходимо собрать новый образ и использовать его для запуска контейнеров:
В рабочей директории создадим файл: plugin_requirements.txt pпоместим в него список плагинов, которые нам необходимы:
netbox-secrets
netbox-bgp
netbox-topology-views
netbox-plugin-dns
netbox-tunnels2
Тамже создадим файл: Dockerfile-Pluginsсо следующим содержимым:
FROM quay.io/netboxcommunity/netbox:v3.6.3
COPY ./plugin_requirements.txt /opt/netbox/
RUN mkdir -p /opt/netbox/netbox/static/netbox_topology_views/img
RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /opt/netbox/plugin_requirements.txt
# These lines are only required if your plugin has its own static files.
#COPY configuration/configuration.py /etc/netbox/config/configuration.py
COPY configuration/plugins.py /etc/netbox/config/plugins.py
RUN SECRET_KEY="dummydummydummydummydummydummydummydummydummydummy" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input
Кроме того необходимо создать файл: docker-compose.override.yaml , который позволит использовать новый образ при запуске контейнера:
version: '3.4' # This is NOT the version of NetBox! No need to adjust :)
services:
netbox:
image: netbox:latest-plugins
ports:
- 8000:8080
build:
context: .
dockerfile: Dockerfile-Plugins
netbox-worker:
image: netbox:latest-plugins
build:
context: .
dockerfile: Dockerfile-Plugins
netbox-housekeeping:
image: netbox:latest-plugins
build:
context: .
dockerfile: Dockerfile-Plugins
По готовности собираем образ:
sudo docker compose build --no-cache
Добавим информацию о наших плагинах в файл plugins.py
PLUGINS = ["netbox_secrets", "netbox_bgp", "netbox_topology_views", "netbox_dns", "netbox_tunnels2"]
И запускаем контейнер:
sudo docker-compose up -d