backuppc_client

Роль Ansible для клиента BackupPC

Эта роль, backuppc_client, устанавливает и настраивает обе стороны для клиентских хостов сервера BackupPC. Она работает с ролью backuppc_server, которая настраивает сервер (однако, поскольку конфигурация стандартная и Ansible имеет доступ, она может обрабатывать любую установку сервера BackupPC).

Она работает на Debian Buster (10) и Stretch (9) для расширенной настройки (резервное копирование баз данных), но для базовой конфигурации дампов BackupPC может обрабатывать Ubuntu или любые другие Debian-подобные системы (PR принимаются).

Эта роль и ее пара backuppc_server основаны на роли hanxhx/backuppc.

Описание

Эта роль настраивает резервные копии хостов на сервере BackupPC. Она может выполнять следующие действия:

  • Создание пользователя Linux на клиенте и резервной конфигурации сервера BackupPC, который будет получать доступ к клиенту с этим пользователем.
  • Опциональная загрузка на клиент скриптов pre_dump и post_dump с возможными правами sudo, которые выполняются соответственно перед и после дампа файлов BackupPC. Эти скрипты выполняют команды, необходимые для получения согласованных резервных копий, такие как дампы баз данных, снимки и т. д.
  • Опциональная настройка пользователя MySQL с правами SELECT на всех базах для выполнения дампа перед резервным копированием.
  • Опциональная настройка скрипта, который будет делать дамп определенной базы данных PostgreSQL.

Требования

Вам потребуется работающий сервер BackupPC, управляемый в вашем инвентаре Ansible, имя которого будет определено в переменной backuppc_server_name.

На данный момент эта роль управляет резервными копиями только с помощью метода rsync (+ ssh).

Совместимость с предыдущими версиями

Чтобы обеспечить плавное и прогрессивное внедрение этой версии роли на всех хостах, которые ее используют в облачной среде, роль совместима с API переменных v1.X.0, включая ее значения по умолчанию. См. файлы defaults/main.yml и tasks/compatibility.yml, в частности комментарии, для учета устаревших переменных.

Совместимость с предыдущими версиями роли будет отменена в следующем крупном релизе, поэтому адаптируйте свои переменные хостов как можно скорее!

Переменные роли

Каждая конфигурация клиента переопределяет глобальную конфигурацию на сервере. См. defaults/main.yml для значений по умолчанию или определения переменных. Ниже перечислены переменные, которые можно определить.

Доступ клиента

  • backuppc_client_user: unix-пользователь для подключения сервера к клиенту (по умолчанию backuppc)
  • backuppc_client_group: unix-группа unix-пользователя, определенного в предыдущей строке (по умолчанию backuppc)
  • backuppc_client_home: домашний каталог пользователя backuppc_client_user, который выполняет резервные копии на клиенте

Конфигурация сервера

  • backuppc_server_name: доменное имя сервера BackupPC, который выполняет резервное копирование и откуда ключ ssh берется для настройки на клиенте
  • backuppc_server_user: unix-пользователь, который запускает BackupPC на сервере. По умолчанию backuppc.
  • backuppc_server_group: unix-группа, которая запускает BackupPC на сервере. По умолчанию www-data.
  • backuppc_server_home: домашний каталог unix-пользователя BackupPC на сервере. По умолчанию /var/lib/backuppc.
  • backuppc_server_config_dir: каталог конфигурационных файлов пакета BackupPC. По умолчанию /etc/backuppc.

Конфигурация резервного копирования клиента на сервере

Здесь кратко описаны переменные роли, которые определяют конфигурацию BackupPC клиента на сервере. Для полной документации см. документацию BackupPC.

Следующие флаги определяют, настраиваются ли клиент и сервер ролью:

  • backuppc_backup_state: отсутствует или присутствует (по умолчанию: присутствует). Если присутствует, конфигурирует резервные копии клиента на сервере, иначе удаляет конфигурацию.
  • backuppc_client: если установлено в false (по умолчанию true), нет доступа по ssh или другой конфигурации на клиентском хосте, только сервер настроен для резервного копирования данного хоста.

Файл конфигурации клиента на сервере BackupPC составляется с использованием следующих переменных:

  • backuppc_rsync_share_names: список точек дерева каталогов на клиенте для резервного копирования. Например:
backuppc_rsync_share_names:
- /etc
- /root
- /var
- /usr/local

С помощью метода rsync BackupPC выполнит команду rsync для каждого элемента из этого списка.

  • backuppc_include_files:: список папок для включения в резервную копию клиента (параметр --include команды rsync будет сформирован с использованием этой переменной).
  • backuppc_exclude_files:: список папок для исключения из резервной копии клиента (параметр --exclude команды rsync будет сформирован с использованием этой переменной).
  • backuppc_xfermethod: Опциональный метод передачи (по умолчанию rsync).
  • backuppc_more: Опциональный хэш с конкретными ключами/значениями (полезен для пользовательских директив, таких как расписание резервного копирования и его сохранение). См. пример в файле defaults/main.yml.

Следующие переменные позволяют определить выполнение скриптов дампов pre и post BackupPC:

  • backuppc_pre_dump_script: путь к файлу скрипта pre dump, который BackupPC выполнит перед дампом файлов во время резервного копирования. Его значение по умолчанию '{{ backuppc_client_home }}/scripts/pre_dump.sh'.
  • backuppc_post_dump_script: путь к файлу скрипта post dump, который BackupPC выполнит после дампа файлов во время резервного копирования. Его значение по умолчанию '{{ backuppc_client_home }}/scripts/post_dump.sh'.
  • backuppc_scripts_local_dir: путь в локальном контроллере Ansible, где playbook найдет два предыдущих скрипта, чтобы установить их на клиенте. Его значение по умолчанию '{{ playbook_dir }}/host_vars/{{ inventory_hostname }}/files/backuppc/'. Таким образом, в структуре каталогов вашего playbook вы должны положить скрипты pre и post dump в файлы с такими же базовыми именами, как их соответствующие пути выше, в папку с названием files/backuppc, рядом с папкой vars конфигурируемого вами хоста:
 host_vars
 └── <your_host>
     ├── files
     │   └── backuppc
     │       ├── post_dump.sh
     │       └── pre_dump.sh
     └── vars
         ├── 10_kvm_virtual.yml
         └── 20_backuppc.yml
  • backuppc_scripts: флаг для установки скриптов. Если true, устанавливает ранее описанные скрипты pre и post dump. Этот флаг устарел. Он сохранен для совместимости с предыдущими версиями, но в следующей крупной версии он будет удален, и скрипты будут устанавливать, когда их путь будет определен.

  • backuppc_scripts_sudo: флаг true/false для предоставления прав sudo для скриптов pre и post dump.

  • backuppc_DumpPreUserCmd и backuppc_DumpPostUserCmd: команды ssh для выполнения BackupPC скриптов pre_dump и post_dump. Эти переменные заранее определены в соответствии с предыдущими флагами, но могут быть переопределены.

  • backuppc_sudoer – команды, разрешенные для backuppc_client_user с правами sudo. Это строка, которую можно переопределить при условии, что она начинается с Cmnd_Alias BACKUPS =, за которой следует список shell-команд, которые пользователь должен выполнить для создания резервной копии. По умолчанию эта переменная включает rsync и, возможно, скрипты pre и post dump, в соответствии с предыдущими флагами.

Следующие переменные предоставляют инструменты для определения, используя вышеописанные скрипты, дампов баз данных для согласованности резервных копий:

  • backuppc_db_server_type: переменная с тремя состояниями, которая определяет возможный mysql или pgsql дамп перед резервным копированием. Три возможных значения: pgsql, mysql или null. Поведение скриптов и резервных копий баз данных различно для mysql и pgsql. В частности, для MySQL вам нужно самостоятельно добавить скрипты pre_dump.sh и post_dump.sh, которые выполняют работу по созданию дампов баз данных, в то время как для PostgreSQL эти скрипты создаются из шаблонов (и они делают дамп только одной базы данных). Для PostgreSQL права на базу данных должны быть предварительно определены, в то время как для MySQL задача присваивает права доступа к базе данных определенному пользователю.
  • Для PostgreSQL переменные:
    • backuppc_db_to_dump_name определяет базу данных pgsql для резервного копирования,
    • backuppc_db_dump_user определяет пользователя pgsql для доступа к базе данных,
    • backuppc_db_dump_user_pass – это пароль предыдущего пользователя. Настройка паролей и прав этого пользователя должна быть проведена в другом месте в playbook.
  • Для Mysql переменные:
    • backuppc_db_server_root_pass должен быть установлен на соответствующее значение, если для пользователя mysql root установлен пароль. По умолчанию переменная не определена. Необходимо отметить, что в недавних установках mysql/mariadb, по крайней мере, на Debian, установка mysql не требует ввода пароля для root и не генерирует его случайным образом. Сопровождение Debian больше не выполняется с помощью конкретного пользователя и пароля, а с помощью пользователя root через unix-сокет, а не tcp-аутентифицированный сокет. Если переменная остается неопределенной, задачи mysql будут выполнены с использованием конфигурации обслуживания Debian.
    • backuppc_db_dump_user и backuppc_db_dump_user_pass – это имя mysql-пользователя и соответствующий пароль, которому будут предоставлены права доступа SELECT ко всем базам и будет настроен как по умолчанию в файле .my.cnf в домашнем каталоге unix-пользователя backuppc_client_user для linux-пользователя, который выполняет скрипты резервного копирования. Поэтому скрипты pre_dump.sh или post_dump.sh смогут выполнить любой дамп базы данных, вызывая простую команду mysql.

Следующие переменные настраивают веб-доступ к резервным копиям клиентского хоста через веб-интерфейс BackupPC:

  • backuppc_server_web_main_user: основной пользователь с доступом к резервным копиям клиентского хоста через веб-интерфейс BackupPC. По умолчанию backuppc.
  • backuppc_server_web_other_users: другие пользователи с доступом к резервным копиям клиентского хоста через веб-интерфейс BackupPC. Должны быть определены как строка с перечислением пользователей, разделенных запятыми: "user1,user2". Доступ пользователя должен быть настроен на сервере BackupPC.

Примеры скриптов Mysql

Для резервного копирования Mysql, чтобы сделать дамп всех баз данных перед дампом файлов, вы можете использовать следующие скрипты, которые воспользуются пользователем backuppc mysql, настроенным с помощью роли:

  • pre_dump.sh
#!/bin/bash
for DataB in `mysql -e "show databases" | grep -v Database`; do mysqldump --single-transaction $DataB > "$DataB.sql"; done
tar -czvf dump.sql.tar.gz *.sql
rm *.sql
  • post_dump.sh
#!/bin/bash
rm dump.sql.tar.gz

Пример Playbook

Предположим, что у нас есть стандартный экземпляр BackupPC, работающий на bck-server.domain.org, управляемый через инвентарь Ansible. Следующий playbook настраивает на этом сервере резервное копирование указанных папок хоста client.domain.org с необходимым доступом по ssh.

- name: Резервное копирование хоста client.domain.org
  hosts: client.domain.org
  become: true
  vars: 
  - backuppc_server_name: bck-server.domain.org
  - backuppc_rsync_share_names:
    - /etc
    - /var
    - /opt

  roles: 
  - role: udelarinterior.backuppc_client

Лицензия

GPLv3

Информация об авторе

Исходная роль Emilien M улучшена Víctor Torterola и Daniel Viñar.

Установить
ansible-galaxy install UdelaRInterior/ansible-backuppc-client
Лицензия
Unknown
Загрузки
60
Владелец
Red Unidades Informáticas de la UdelaR en el Interior