RuBackup#
RuBackup – клиент-серверная система резервного копирования. Развертывание RuBackup с использованием коллекции astra.rubackup из реестра Automation Hub позволяет автоматизировать большую часть рутинных операций.
Структура#
Система резервного копирования RuBackup может состоять из основного сервера резервного копирования, резервного сервера, медиа-серверов и клиентов.
Существуют роли для настройки следующих компонентов RuBackup:
astra.rubackup.rubackup_server
– основной сервер резервного копирования;astra.rubackup.rubackup_media_server
– медиасерверы;astra.rubackup.rubackup_client
– клиенты.
Также в состав коллекции входит роль astra.rubackup.rubackup_common
, однако, ее непосредственное использование не допускается.
Это служебная роль, которая используется другими ролями.
Для работы RuBackup необходим сервер PostgreSQL. Для его развертывания и настройки можно использовать коллекцию astra.postgresql из реестра Automation Hub.
Параметры настройки#
Для настройки параметров RuBackup необходимо присвоить соответствующие значения переменным роли.
Роль astra.rubackup.rubackup_server
#
Роль astra.rubackup.rubackup_server
используется для настройки основного сервера резервного копирования.
Переменные роли:
rubackup_def_pool
– путь к пулу хранилища по умолчанию.rubackup_server_pgsql_user
– название учетной записи пользователя-администратора PostgreSQL.rubackup_server_psql_fqdn
– FQDN сервера PostgreSQL.rubackup_server_psql_password
– пароль учетной записи пользователя-администратора PostgreSQL.rubackup_server_psql_password_rubackup
– пароль учетной записи пользователя PostgreSQL, от имени которого RuBackup подключается к PostgreSQL.Важно
Требования к паролю:
длина не менее 12 символов;
содержит хотя бы по одному символу следующих типов:
символ верхнего регистра;
цифра;
специальный символ.
rubackup_server_users
– учетные данные пользователей PostgreSQL, от имени которых RuBackup подключается к СУБД.
Роль astra.rubackup.rubackup_media_server
#
Роль astra.rubackup.rubackup_media_server
используется для настройки медиа-серверов.
Переменные роли:
rubackup_media_server_db_host
– FQDN сервера PostgreSQL.rubackup_media_server_db_pass
– пароль пользователя-администратора сервера PostgreSQL.rubackup_pri_fqdn
– FQDN основного сервера резервного копирования.
Роль astra.rubackup.rubackup_client
#
Роль astra.rubackup.rubackup_client
используется для настройки клиентов.
Переменные роли:
rubackup_pri_fqdn
– FQDN основного сервера резервного копирования.rubackup_servers_group_name
– название группы, узлы которой необходимо зарегистрировать как клиенты.rubackup_users
– список названий учетных записей пользователей PostgreSQL.
Обязательные переменные#
При использовании ролей обязательные для заполнения следующие переменные:
astra.rubackup.rubackup_server
:rubackup_packages_version
;rubackup_ram
;rubackup_server_psql_fqdn
;rubackup_server_psql_password_rubackup
;
astra.rubackup.rubackup_media_server
:rubackup_media_server_db_pass
;rubackup_packages_version
;rubackup_pri_fqdn
;rubackup_ram
;
astra.rubackup.rubackup_client
:rubackup_packages_version
;rubackup_pri_fqdn
;rubackup_ram
;rubackup_servers_group_name
.
Последовательность применения#
Для применения указанной коллекции выполните следующие действия:
Разверните сервер PostgreSQL любым удобным способом.
Подготовьте узлы с необходимыми техническими характеристиками.
Подготовьте узлы к настройке с помощью Ansible:
обеспечьте доступ к узлам по SSH с использованием ключей;
разрешите на всех узлах использование sudo без ввода пароля;
Создайте каталог проекта, например:
mkdir rubackup-enrolling
Все упомянутые ниже файлы следует создавать в каталоге проекта, если только явно не указано иное.
Создайте файл с настройками Ansible
ansible.cfg
:[defaults] collections_path = ./collections host_key_checking = false interpreter_python = /usr/bin/python3 inventory = inventory.ini gathering = smart timeout = 60 [ssh_connection] pipelining = True retries = 10
Создайте файл инвентаря
inventory.ini
и добавьте в него сведения об управляемых узлах, например:[all] server.example.com ansible_host=192.168.56.101 media-server.example.com ansible_host=192.168.56.102 [all:vars] ansible_user=vagrant ansible_ssh_private_key=./ssh/key
Создайте файл с переменными
variables.yml
, например:--- # Settings for astra.rubackup roles rubackup_user: "rubackup" rubackup_user_password: "p@ssword!1" rubackup_default_repository: >- deb https://dl.astralinux.ru/rubackup/repository-deb-main/ astra_1.7 stable rubackup_pri_fqdn: "server.example.com" rubackup_users: - rubackup rubackup_media_server_db_pass: "SecretPassw@rd1" rubackup_server_psql_password_rubackup: "SecretPassw@rd1" rubackup_server_psql_fqdn: "server.example.com" rubackup_server: "server.example.com" postgresql_users: - name: "{{ rubackup_server_pgsql_user }}" password: "{{ rubackup_server_psql_password }}" state: present postgresql_hba_entries: - type: local database: all user: "{{ rubackup_server_pgsql_user }}" auth_method: peer - type: local database: all user: all auth_method: peer - type: host database: all user: all address: "127.0.0.1/32" auth_method: md5 - type: host database: all user: all address: "192.168.56.31/32" auth_method: md5 - type: host database: all user: all address: "192.168.56.32/32" auth_method: md5 - type: host database: all user: all address: "192.168.56.33/32" auth_method: md5 rubackup_server_users: - rubackup
Создайте файл зависимостей Ansible
requirements.yml
, в который добавьте ссылку на загрузку коллекцииastra.ald_pro
, например:--- collections: - name: astra.postgresql type: git source: ssh://git@hub.astra-automation.ru:2222/aa-gca/ARFA/postgresql.git version: 2.2.3 - name: astra.rubackup type: git source: ssh://git@hub.astra-automation.ru:2222/aa-gca/ARFA/rubackup.git version: 0.6.0
Установите зависимости:
ansible-galaxy collection install -r requirements.yml
Создайте файл playbook, в который добавьте роли для всех узлов домена, например:
--- # Create rubackup user and join it to the rubackup group - hosts: server.example.com become: true tasks: - name: Create RuBackup system user (on Server) ansible.builtin.user: name: "{{ rubackup_user }}" password: "{{ rubackup_user_password | password_hash('sha512') }}" state: present vars_files: - variables.yml # SERVER - hosts: server.example.com become: true gather_facts: true roles: - astra.postgresql.postgresql - astra.rubackup.rubackup_server vars_files: - variables.yml # MEDIA SERVER - hosts: media-server.example.com become: true # may be not necessary roles: - astra.rubackup.rubackup_media_server vars_files: - variables.yml
Запустите выполнение playbook.