Автоматизация резервного копирования VMware Cloud Director Appliance

от автора

Резервное копирование — критически важная задача. Выполнить её позволит встроенный скрипт от VMware Cloud Director, который можно запустить двумя способами. Первый — с помощью страницы обслуживания (VMware Cloud Director Appliance), второй — вручную (путь: /opt/vmware/appliance/bin/create-backup.sh, или здесь

Совет: если ваш Cloud Director старше версии 10.5.1.1, развёрнут на Debian или другой подобной ОС, то есть смысл ознакомиться с одной полезной статьёй. Этот материал позволит исправить проблему в работе встроенного скрипта резервного копирования: https://knowledge.broadcom.com/external/article/325662/creating-database-backups-might-fail-whe.html

Теперь вернёмся к нашей публикации. Скрипт выполнит резервное копирование базы данных и нужных конфигурационных файлов и разместит упакованную резервную копию в директории /opt/vmware/vcloud-director/data/transfer/backups, однако ротация файлов не предусмотрена. В этой статье мы разберём вариант bash-скрипта, который автоматизирует создание и ротацию бэкапов VMware Cloud Director, а также простой способ отследить успешность выполнения скрипта в Zabbix.

Код скрипта:

#!/bin/bash

# Директория с файлами бэкапов
vcd_backup=»/opt/vmware/vcloud-director/data/transfer/backups»

# количества дней актуальных бэкапов
days = 30

# Файл с флагом выполнения для мониторинга
log_file=»/var/log/create-backup-vcd-flag»

# Функция поиска и удаления файлов резервных копий
remove_old_backups() {
    # Проверка наличия директории
    if [ ! -d «$vcd_backup» ]; then
        echo «Backup directory $vcd_backup does not exist!» >&2
        return 1
    fi

    # Поиск файлов старше $days
    older_backups=$(find «$vcd_backup» -type f -mtime «+$days» 2>/dev/null)

    if [ -n «$older_backups» ]; then
      echo «Deleting older backups:»
      echo «$older_backups»
      while IFS= read -r file; do
        if [ -f «$file» ]; then
          rm -f «$file» && echo «Deleted: $file» || echo «Failed to delete: $file» 2>&1
        fi
      done <<< «$older_backups»
    else
      echo «No backups older than 30 days found in $vcd_backup.»
    fi
}

echo «Starting VCD Backup Procedure at $(date)»

echo «Running create-backup.sh…»
if /opt/vmware/appliance/bin/create-backup.sh; then
    echo «VCD backup created successfully»
    echo «1» > «$log_file»
else
    echo «Error with create-backup.sh» >&2
    echo «0» > «$log_file»
fi

# Установка разрешения на файл с маркером успешного выполнения бэкапа
chmod 644 «$log_file»

# Функция ротации бэкапов
remove_old_backups

echo «Backup procedure completed at $(date)»

Если у вас собран кластер, то бэкап следует выполнять на primary ноде. Скрипт размещается на каждой ноде, и в код добавляется проверка:

# Проверяем, что находимся на primary ноде
if sudo -i -u postgres repmgr node check —role | grep -q primary; then
  echo «Running Backup Job»
  # и выполняем скрипт
  /opt/vmware/appliance/bin/create-backup.sh
  # после удаляем устаревшие копии
  remove_old_backups
else
  # иначе не выполняем ничего
  echo «This is not the Primary cell»
fi

После выполнения в файл /var/log/create-backup-vcd-flag записывается “1” при успешном выполнении скрипта или “0” (в противном случае). 

Для отслеживания файла необходимо:

  1. Установить на appliance агента Zabbix.

  2. Настроить текстовый элемент данных vfs.file.contents[/var/log/create-backup-vcd-flag] 

  3. Настроить триггер на этот элемент last(/vCD Daily Backup/vfs.file.contents[/var/log/create-backup-vcd-flag])=0

Мы рассмотрели способы резервного копирования VMware Cloud Director и вариант автоматизации с мониторингом. 

Спасибо за внимание!


ссылка на оригинал статьи https://habr.com/ru/articles/923546/