Backup virtual hosts on esxi via ghettoVCB sript in cron automaticly

Вступление

Подготовка ESXI
Установка ghettoVCB
Настройка ghettoVCB
Настройка cron
Настройка отправки уведомлений по почте
Восстановление машины
 

Подготовка ESXI

#Включим доступ по ssh на esxi

vSphere Client - Configuration -> security profile -> properties -> SSH

 

#Подключаем (с правом записи на него) внешний датастор external_datasore, на который у нас будут складироваться бекапы, осознайте что он должен быть RAID массивом.

vSphere Client - Configuration -> Storage -> Add Storage

Установка ghettoVCB

#Скачиваем https://github.com/lamw/ghettoVCB установочный vib файл vghetto-ghettoVCB.vib и помещаем его в папку /tmp хоста vmware
#Устанавливаем скрипт ghettovcb через vib пакет в таком случае он не будет удалятся после перезагрузки vmware
#ВМ, которые нужно бэкапить, НЕ ДОЛЖНЫ содержать снапшотов

esxcli software vib install -v /tmp/vghetto-ghettoVCB.vib -f

Настройка ghettoVCB

#Создаем папку на внешнем датасторе path_to_ghettoVCB_config_files, где будут храниться все наши конфигурационные файлы скрипта ghettovcb, для того что бы при перезагрузки они не удалялись, и при крахе системы можно было все продублировать.

mkdir /vmfs/volumes/$external_datastore/path_to_ghettoVCB_config_files/


#Создаем папку лог файлов работы скрипта ghettjvcb на внешнем датасторе в папке path_to_ghettoVCB_config_files

mkdir /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/log

Настройка cron

# Создадим недельный файл-лист со список машин для бекапа

touch /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.list

# Откроем его и внесем туда список машин для недельного бекапа

vi /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.list

#Список работающих машин (их точное название) можно посмотреть командой

esxcli vm process list


# Создадим недельный файл конфигурации для бекапа

touch /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.conf

# Откроем его и внесем туда конфигурацию недельного бекапа

vi /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.conf

#То же самое сделайте и для дневных бекапов использя файлы day.list day.conf month.list month.conf
#Задача сделать бекап виртуальных машин в кроне
# сделаем бекап текущего крона добавив к нему слово default и текущую дату - время в папке path_to_ghettoVCB_config_files

cp /var/spool/cron/crontabs/root /vmfs/volume/external_datastore/path_to_ghettoVCB_config_files/$(date +%Y%m%d%H%M%S)_root.default

# разрешим запись в файл /etc/rc.local.d/local.sh

chmod +w /etc/rc.local.d/local.sh

# Откроем файл на редкатирование

vi /etc/rc.local.d/local.sh

# Вставим в конец файла строки которы будут сначала убивать текущий процесс крона далее добавлять наши задания в файл /var/spool/cron/crontabs/root и запускать изменненый крон при каждой загрузке системы, недельный в 3 часа ночи в субботу, ежедневный в 1 ночи, истемное время идёт в UTC, потому необходимо делать поправку на текущий часовой пояс в случае ниже +7 часов. поток мы отправляем в /dev/null поскольку vmware ограничен буфер и если он переполнится бекап может потерпеть крах.

/bin/kill $(cat /var/run/crond.pid)
#day bckup
/bin/echo "0 3 * * * /opt/ghettovcb/bin/ghettoVCB.sh -f /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/day.list -g /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.conf -l /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/logs/$(date +%Y%m%d%H%M%S)_day_backup.log > /dev/null 2>&1" >> /var/spool/cron/crontabs/root
#week backup
/bin/echo "0 5 * * 6 /opt/ghettovcb/bin/ghettoVCB.sh -f /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/week.list -g /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/day.conf -l /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/logs/$(date +%Y%m%d%H%M%S)_week_backup.log > /dev/null 2>&1" >> /var/spool/cron/crontabs/root
#month backup
/bin/echo "0 8 1 * * /opt/ghettovcb/bin/ghettoVCB.sh -f /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/month.list -g /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/month.conf -l /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/logs/$(date +%Y%m%d%H%M%S)_month_backup.log > /dev/null 2>&1" >> /var/spool/cron/crontabs/root
/cron/crontabs/root /bin/crond

# снимем флаг записи с файла /etc/rc.local.d/local.sh

chmod -w /etc/rc.local.d/local.sh

#Выполним команду для сохранения изменений

/sbin/auto-backup.sh

#Перезагрузим хост

reboot

Проверим что записи в файл /var/spool/cron/crontabs/root добавились

cat /var/spool/cron/crontabs/root

Настройка отправки уведомлений по почте

comming soon

Восстановление машины

Для восстановления машины испольуем скрит ghettoVCB-restore.sh

его параметры

Usage: ./ghettoVCB-restore.sh -c [VM_BACKUP_UP_LIST] -l [LOG_FILE] -d [DRYRUN_DEBUG_INFO]

   -c     Файл со списком восстанавливаемых машин, см синтексис
   -l     Лог файл
   -d     Вывод информации [1|2]
Нам необходимо создать файл со списком восстанавливаемых машин, со скриптом поставляется шаблон:

ghettoVCB-restore_vm_restore_configuration_template

По его примеру создадим копированием свой файл:

cp /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/ghettoVCB-restore_vm_restore_configuration_template /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/ghettoVCB-restore_vm_our_list
 
Откроем наш файл на редактирование
 
vi /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/ghettoVCB-restore_vm_our_list
 
Раскомментируем последнюю строчку и приведем ее к виду
 
"/vmfs/volumes/external_datastore/OurRestoredVM/OurRestoredVM-YYYY-MM-DD-HH-MM-SS;/vmfs/volumes/LocalStorage:1;OurRestoredVM" 
 
Где 
...OurRestoredVM/OurRestoredVM-YYYY-MM-DD-HH-MM-SS... - путь да папки или архива с бекапом
.../vmfs/volumes/LocalStorage... - путь куда мы восстанавливаем
...OurRestoredVM... - отображаемое имя
 
Запускаем скрипт
/vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/ghettoVCB-restore.sh -c /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/ghettoVCB-restore_vm_our_list -l /vmfs/volumes/external_datastore/path_to_ghettoVCB_config_files/logs/$(date +%Y%m%d%H%M%S)_restor_backup.log -d 2

Наблюдаем процесс восстановления, После нужно запустить машину, и выбрать "I Copied It"

Таксаномия: 

Добавить комментарий