Перейти к основному содержанию
 

Netbox и Backup Exec

NetBox

Подружим между собой Netbox и Veritas Backup Exec 20. Symantec Backup Exec 15 тоже удалось подружить.

Netbox — документируем сеть

Задача

  • В Netbox внесены виртуальные машины.
  • В Veritas Backup Exec 20 настроено резервное копирование виртуальных машин.

Задача простая, в Netbox в кастомное поле "Backup" у виртуальной машины нужно внести расписание, по которому производится резервное копирование.

Нам понадобится:

  • Powershell скрипт, который будет всё за нас делать.
  • BEMCLI модуль PS, который устанавливается вместе с Backup Exec.
  • API Netbox, из коробки. Сгенерируем токен в админке.
  • Task Scheduler поможет автоматизировать процесс.

Решение

Алгоритм работы скрипта:

  1. Пробегаем циклом по всем виртуальным машинам, которые обработали в прошлый раз. Пишем в Netbox в кастомное поле "<сервер бэкапа> <дата> — отменено". Тем самым мы подстраховываемся на тот случай, если виртуальная машина перестала бэкапиться, а запись о расписании в Netbox есть. Чистим за собой. Список обработанных виртуалок храним в файле.
  2. Получаем список расписаний резервного копирования для виртуальных машин из Backup Exec и вносим данные в Netbox.
 
PowerShell скрипт netbox_vm_backup_schedule.ps1

Скачать: scripts.zip

Здесь:

  • $workdir = "C:\scripts\"
    Путь к рабочей директории.
  • $filevmlistname = "vmlist.txt"
    Имя файла для хранения имён виртуальных машин.
  • $netbox = "https://netbox.example.local"
    URL к Netbox.
  • $token = "b67b67b67b67b67b67b67b67b67b67b67b67b67b"
    Токен, генерируется в админке Netbox.
  • $vcenter = "vcenter.example.local"
    Имя vCenter в Backup Exec.
  • $custom_field = "Backup"
    Имя кастомного поля в Netbox.

Сохраняем скрипт в папку C:\scripts на сервере Backup Exec. Рядом создаём пустой файл vmlist.txt, здесь будет храниться список виртуальных машин.

netbox

Работу скрипта можно протестировать вручную в PowerShell. Убедитесь, что модуль BEMCLI у вас присутствует.

netbox

После отработки скрипта у виртуальной машины в кастомном поле появился запись:

netbox

Если резервное копирование отменится, то запись станет такой:

netbox

В web-интерфейсе это выглядит так:

netbox

Расписание

Настроим расписание для ежедневного запуска скрипта. Воспользуемся Планировщиком Заданий — Task Scheduler.

netbox

Создаём новое задание.

netbox

Укажем любое имя. Запускаем с максимальными привилегиями и без логина.

netbox

Переходим к триггерам, создаём новый.

netbox

Выбираем желаемое расписание. Я запускаю ежедневно в 6:30 утра. OK.

netbox

Расписание создано.

netbox

Переходим к действиям, создаём новое. Для запуска PowerShell скрипта выполним программу:

powershell.exe -file "C:\scripts\netbox_vm_backup_schedule.ps1"

netbox

Настраиваем условия. Например, разбудим компьютер для выполнения скрипта.

netbox

Указываем настройки. Например, "Do not start a new instance".

netbox

OK.

netbox

Укажем имя пользователя для запуска скрипта. Естественно, он должен иметь права для доступа к Backup Exec. OK.

netbox

Расписание создано.

Заключение

Мы создали скрипт, который вытаскивает расписание резервного копирования виртуальной машины и записывает его в кастомное поле той же виртуальной машины в Netbox.

Минусы решения

  • Хотелось бы, конечно, внести дату последней резервной копии, но мне не удалось докопаться до списка резервных копий, поэтому я пока ограничился расписанием.
  • Если виртуальная машина бэкапится по нескольким расписаниям, то в Netbox записывается только одно.
  • Для Symantec Backup Exec 15 пришлось кое-где убрать "-UseBasicParsing" из кода, вероятно, это зависит от версии Powershell и операционной системы Windows Server.

Плюсы решения

  • Шарманка работает, автоматизация!
  • Если машина перестала бэкапиться, то расписание в Netbox заменяется текстом "<сервер бэкапа> <дата> — отменено".
  • Для работы не пришлось устанавливать дополнительное ПО.