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, следуя инструкции.
Создайте каталог проекта, например:
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 version: 2.2.3 - name: astra.rubackup version: 0.6.0
Установите зависимости:
ansible-navigator exec -- ansible-galaxy install -r requirements.yml
Создайте файл сценария
playbook.ymlи используйте в нем роли для всех узлов домена, например:--- # 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
Запустите выполнение сценария.