Добро пожаловать в это руководство по запуску Netbox IPAM в контейнерах Docker.
Но прежде чем мы погрузимся в суть вопроса, давайте сначала узнаем, что представляет собой инструмент Netbox IPAM.
Netbox – это бесплатный инструмент с открытым исходным кодом, используемый для управления и документирования компьютерных сетей.
Netbox IPAM написан на языке Django.
Он помогает облегчить задачу создания виртуальных реализаций устройств в центре обработки данных, которые первоначально выполнялись на бумаге.
Удивительные возможности Netbox IPAM включают следующее:
- Управление Vlan
- Управление VRF
- IPAM – управление IP-адресами
- DCIM – управление инфраструктурой центра обработки данных
- Управление провайдерами каналов связи
- Многосайтовость
- Единая конвергентная база данных
- Оповещения
- Управление подключениями – интерфейсы/консоли/питание
- Персонализация заголовка для логотипа и т.д.
Запуск Netbox в контейнерах Docker очень прост, поскольку при этом можно избежать утомительной установки таких зависимостей, как Python, Django и т.д.
Начало работы.
Прежде чем приступить к работе над этим руководством, убедитесь, что ваша система обновлена и в ней установлены необходимые пакеты.
## На Debian/Ubuntu
sudo apt update && sudo apt upgrade
sudo apt install curl vim git
## На RHEL/CentOS/RockyLinux 8
sudo yum -y update
sudo yum -y install curl vim git
## На Fedora
sudo dnf update
sudo dnf -y install curl vim git
1. Установите Docker и Docker-Compose на Linux
Эта установка зависит от Docker и docker-compose, отвечающих следующим требованиям:
- Docker версии 19.03 и выше
- docker-compose версии 1.28.0 и выше
Установите последнюю версию Docker CE на Linux!
Не будем останавливаться на установке Docker
Проверьте установленную версию Docker.
$ docker -v
Docker version 20.10.10, build b485636
Затем добавьте вашего системного пользователя в группу docker, чтобы выполнять команды docker без использования команды sudo.
sudo usermod -aG docker $USER
newgrp docker
Теперь приступайте к установке Docker-compose на Linux.
Загрузите последнюю версию
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
Сделайте файл исполняемым.
chmod +x docker-compose-linux-x86_64
Переместите файл в свой PATH.
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
Проверьте свою установку, проверив версию docker-compose.
$ docker-compose version
Docker Compose version v2.1.1
Теперь запустите и включите docker.
sudo systemctl start docker && sudo systemctl enable docker
2. Настройка IPAM-сервера Netbox
Все компоненты, необходимые для сборки Netbox в виде контейнера, представлены в репозитории Github.
Здесь образы собираются и публикуются на Docker Hub и Quay.io раз в день.
Теперь gклонируйте gitx файл репозитория Netbox, как показано ниже.
git clone -b release https://github.com/netbox-community/netbox-docker.git
Перейдите в каталог Netbox.
cd netbox-docker
Измените файл docker-compose.yml из файла docker-compose.override.yml.example следующим образом.
tee docker-compose.override.yml <<EOF
version: '3.4'
services:
netbox:
ports:
- 8000:8080
EOF
Теперь мы готовы запустить наш контейнер docker.
Но сначала извлеките необходимые образы для Netbox, PostgreSQL, Redis и т.д.
$ docker-compose pull
Будет извлечено несколько образов, как показано ниже:
...........
⠿ postgres Pulled 13.5s
⠿ 9f97b97dbe44 Pull complete 3.5s
⠿ 1b95022c44c5 Pull complete 3.7s
⠿ 560a1e367f24 Pull complete 8.0s
⠿ 41255ef20c58 Pull complete 8.3s
⠿ 13107d5a09d7 Pull complete 8.6s
⠿ 234db58e5916 Pull complete 8.8s
⠿ 98ce0f30aef7 Pull complete 9.1s
⠿ redis Pulled 9.3s
⠿ 97518928ae5f Already exists 0.8s
⠿ 66f8c4150d27 Pull complete 2.5s
⠿ redis-cache Pulled 9.3s
⠿ 09a8bf17a0bf Pull complete 3.1s
⠿ e547313af8e7 Pull complete 4.0s
⠿ 335eeadfbde0 Pull complete 4.6s
⠿ 7151fc2c01eb Pull complete
Запустите контейнер Netbox IPAM.
$ docker-compose up
Пример вывода:
[+] Running 10/10
⠿ Network netbox-docker_default Created 0.2s
⠿ Volume "netbox-docker_netbox-media-files" Created 0.0s
⠿ Volume "netbox-docker_netbox-postgres-data" Created 0.0s
⠿ Volume "netbox-docker_netbox-redis-data" Created 0.0s
⠿ Container netbox-docker-redis-cache-1 Created 0.7s
⠿ Container netbox-docker-postgres-1 Created 0.6s
⠿ Container netbox-docker-redis-1 Created 0.7s
⠿ Container netbox-docker-netbox-worker-1 Created 0.5s
⠿ Container netbox-docker-netbox-housekeeping-1 Created 0.5s
⠿ Container netbox-docker-netbox-1 Created 0.3s
Attaching to netbox-docker-netbox-1, netbox-docker-netbox-housekeeping-1, netbox-docker-netbox-worker-1, netbox-docker-postgres-1, netbox-docker-redis-1, netbox-docker-redis-cache-1
....................
netbox-docker-netbox-1 | ⏳ Waiting for control socket to be created... (1/10)
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [warn] 7#7 Unit is running unprivileged, then it cannot use arbitrary user and group.
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [info] 7#7 unit started
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [info] 20#20 discovery started
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [notice] 20#20 module: python 3.9.5 "/usr/lib/unit/modules/python3.unit.so"
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [info] 7#7 controller started
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [notice] 7#7 process 20 exited with code 0
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [info] 22#22 router started
netbox-docker-netbox-1 | 2021/11/15 10:37:29 [info] 22#22 OpenSSL 1.1.1l 24 Aug 2021, 101010cf
netbox-docker-netbox-1 | ⚙️ Applying configuration from /etc/unit/nginx-unit.json
netbox-docker-netbox-1 | 2021/11/15 10:37:30 [info] 26#26 "netbox" application started
netbox-docker-netbox-1 | ✅ Unit configuration loaded successfully
netbox-docker-netbox-1 | 2021/11/15 10:37:31 [notice] 7#7 process 18 exited with code 0
Когда вы увидите вышеуказанный вывод, процесс завершен, теперь выйдите, продолжите и убедитесь, что контейнеры запущены:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ead31a95654a netboxcommunity/netbox:v3.0-1.4.1 "/sbin/tini -- /opt/…" 2 minutes ago Up 2 minutes 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp netbox-docker-netbox-1
d652988275e6 netboxcommunity/netbox:v3.0-1.4.1 "/sbin/tini -- /opt/…" 2 minutes ago Up 2 minutes netbox-docker-netbox-housekeeping-1
6ee0e21ecde0 netboxcommunity/netbox:v3.0-1.4.1 "/sbin/tini -- /opt/…" 2 minutes ago Up 2 minutes netbox-docker-netbox-worker-1
3ff7e0c6b174 redis:6-alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 6379/tcp netbox-docker-redis-cache-1
92e49f207764 redis:6-alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 6379/tcp netbox-docker-redis-1
77908ccce0ca postgres:13-alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 5432/tcp netbox-docker-postgres-1
Если у вас включен брандмауэр, разрешите порт 8000, как показано ниже.
##Для Firewalld
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
##Для UFW
sudo ufw allow 8000/tcp
3. Доступ к веб-интерфейсу инструмента Netbox IPAM
Все готово, теперь мы можем продолжить и получить доступ к веб-интерфейсу Netbox IPAM с помощью URL http://Hostname:8000 или http://IP_Address:8000.
Войдите на страницу с учетными данными по умолчанию: имя пользователя: admin, пароль: admin и API-токен: 0123456789abcdef0123456789abcdef01234567.
Если вы хотите остановить все запущенные контейнеры, выполните следующую команду:
$ docker-compose stop
Вы можете удалить контейнеры, как показано ниже.
$ docker-compose stop && docker-compose rm
Пример вывода:
+] Running 6/0
⠿ Container netbox-docker-netbox-housekeeping-1 Stopped 0.0s
⠿ Container netbox-docker-netbox-1 Stopped 0.0s
⠿ Container netbox-docker-netbox-worker-1 Stopped 0.0s
⠿ Container netbox-docker-redis-cache-1 Stopped 0.0s
⠿ Container netbox-docker-redis-1 Stopped 0.0s
⠿ Container netbox-docker-postgres-1 Stopped 0.0s
? Going to remove netbox-docker-netbox-1, netbox-docker-netbox-housekeeping-1, netbox-docker-netbox-worker-1, netbox-docker-redis-cache-1, netbox-docker-redis-1, netbox-docker-postgres-1 (y/N) y
Заключение
На данный момент мы все можем согласиться с тем, что запуск Netbox IPAM Tool в Docker-контейнерах стал проще.
см. также:
- 🔎 11 лучших инструментов мониторинга с открытым исходным кодом для Linux
- 🐉 Лучшие инструменты управления IP-адресами для Linux
Подскажите, как заставить автоматически запускаться netbox-compose после перезагрузки сервера?
Compose или просто контейнер?
Хотел бы дополнить, что в статье нет информации, как создать юзера внутри Netbox
Вот команда (выполнять из папки докера)
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser