Резервное копирование конфигураций оборудования средствами Netbox

Версия 6.1 от Антон Волков на 2025/09/29 18:50

Установка плагина

Для работы данного плагина у нас должен стоять napalm и плагин netbox-napalm-plugin, инструкция по настройка которого описывается в предыдущей статье.

Для резервного копирования конфигураций в netbox версии 4 и выше, существует плагин netbox-config-backup (GitHub - DanSheps/netbox-config-backup: A configuration backup system using napalm). 

Перед установкой плагина необходимо установить git (если он еще у нас не стоит) для создания локального репозитория где будут храниться конфиги.

# pkg install git

И создать репозиторий

$ mkdir /usr/local/share/netbox/condiff
$ cd /usr/local/share/netbox/condiff
$ git init

Поскольку я делал это на FreeBSD перед установкой плагина советую сделать симлинк git в каталог /usr/bin из каталога /usr/local/bin/git иначе плагин может не встать.

# ln -s /usr/local/bin/git /usr/bin

Устанавливаем плагин из репозиториев или локально.

--- Активируем виртуальное окружение --
$ . /usr/local/share/netbox/venv/bin/activate
--- Ставим плагин ---
(venv)$ pip install netbox-config-backup
--- или ставим локально ---
python -m pip install path/to/Plugin
--- Добавляем плагин в зависимости Netbox что бы при обновлении он не слетел ---
(venv)$ echo netbox-config-backup >> /usr/local/share/netbox/requirements.txt

 Теперь открываем configuration.py по пути /usr/local/share/netbox/netbox/ и добавляем в раздел PLUGIN и PLUGINS_CONFIG следующие строки.

PLUGINS = ["netbox_config_backup"]

PLUGINS_CONFIG = {
'netbox_config_backup': {
    'repository': '/usr/local/share/netbox/condiff',
    'committer': 'netbox commiter@example.com',
    'author': 'netbox author@example.com',
    'frequency': 3600,
},

Выполняем миграцию и перезапускаем службы

--- Выполняем миграцию ---
(venv)$ python3.11 /usr/local/share/netbox/netbox/manage.py migrate
--- перезапускаем службы ---
# service netbox restart
# service netboxrq restart

Создаем отдельную службу брокера через которую у нас будут выполняться задания резервного копирования.

#!/bin/sh

# This sample rc script starts the RQ worker background service which is
# required for Webhooks and various automation tasks.

#
# PROVIDE: netbox_ncb
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf.local or /etc/rc.conf
# to enable netbox-ncb:
#
# netbox_ncb_enable (bool):             Set to NO by default.
#                                       Set it to YES to enable netbox_ncb.

. /etc/rc.subr

name=netbox_ncb
rcvar=netbox_ncb_enable

load_rc_config $name

start_cmd="netbox_ncb_start"
start_precmd="netbox_ncb_precmd"
command="/usr/local/share/netbox/venv/bin/python3.11"
command_args="/usr/local/share/netbox/netbox/manage.py rqworker --name ncb@%i --with-scheduler netbox_config_backup.jobs"
pidfile=${netbox_ncb_pidfile:-/var/run/${name}/${name}.pid}
netbox_ncb_user=${netbox_ncb_user:-netbox}

netbox_ncb_precmd()
{
        install -d -o ${netbox_ncb_user} `dirname ${pidfile}`
}

netbox_ncb_start()
{
       echo "Starting netbox_ncb."
        /usr/sbin/daemon -cf -p ${pidfile} -u ${netbox_ncb_user} ${command} ${command_args}
}
run_rc_command "$1"

Или можем также просто попробовать выполнить:

# /usr/local/share/netbox/venv/bin/python3 /usr/local/share/netbox/netbox/manage.py rqworker --name ncb@%i --with-scheduler netbox_config_backup.jobs

После версии плагина 2.1.4 все кастомные планировщики не нужны, данную службу создавать не нужно, задания должны выполняться через стандартный netbox-rq !!!!!!!!!!!!!!

Настройка Netbox

Для создания конфигов должны соблюдаться несколько условий:

  1. Установлен и настроен netbox-napalm-plugin;
  2. заведена платформа которая прописана в настройках napalm-plugin;
  3. устройства должен быть назначен основной ip адрес и указана платформа

Если все требования соблюдены идем в меню BACKUP JOBS\ Devices и добавляем новое устройство.

1734687203707-530.png

В поле name вводим имя бэкапа, выбираем device из перечня заведенных устройств и ip адрес, который мы выбрали основным в настройках устройства.

1738062226575-179.png

Поле статус означает, что данный бэкап включен и после сохранения задачи по сбору конфигурации попадут в планировщик.

Поле Config status отвечает всего лишь за визуальное обозначение наличия сохраненного конфига для данного бэкапа.

Если мы провалимся внутрь бекапа, то можем увидеть перечень резервных копий.

1738062516462-641.pngСправа можно увидеть две кнопки, первая показывает сам сохраненный конфиг, а вторая если выделить галками два конфига - их различия.

Так же после выхода версии плагина 2.1.4 можно посмотреть статус задач резервного копирования тут:

1741273194606-876.png