RuBackup#

RuBackup – клиент-серверная система резервного копирования. Развертывание RuBackup с использованием коллекции astra.rubackup из реестра Astra 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 из реестра Astra Automation Hub.

Параметры настройки#

Для настройки параметров RuBackup необходимо присвоить соответствующие значения переменным роли.

Роль astra.rubackup.rubackup_server#

Роль astra.rubackup.rubackup_server используется для настройки основного сервера резервного копирования.

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

  • rubackup_def_pool – путь к пулу хранилища по умолчанию.

  • rubackup_server_pgsql_user – название учетной записи пользователя-администратора PostgreSQL.

  • rubackup_server_psql_fqdnFQDN сервера 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.

Последовательность применения#

Для применения указанной коллекции выполните следующие действия:

  1. Разверните сервер PostgreSQL любым удобным способом.

  2. Подготовьте узлы с необходимыми техническими характеристиками.

  3. Подготовьте узлы к настройке с помощью Ansible:

  4. Создайте каталог проекта, например:

    mkdir rubackup-enrolling
    

    Все упомянутые ниже файлы следует создавать в каталоге проекта, если только явно не указано иное.

  5. Создайте файл с настройками 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
    
  6. Создайте файл инвентаря 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
    
  7. Создайте файл с переменными 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
    
  8. Создайте файл зависимостей 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
    
  9. Установите зависимости:

    ansible-galaxy collection install -r requirements.yml
    
  10. Создайте файл 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
    
  11. Запустите выполнение playbook.