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
должен быть установлен на соответствующее значение, если для пользователя mysqlroot
установлен пароль. По умолчанию переменная не определена. Необходимо отметить, что в недавних установках 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.
Install and manage BackupPC Client
ansible-galaxy install UdelaRInterior/ansible-backuppc-client