backup

Ansible Роль: Резервное копирование для простых серверов

CI

Резервное копирование серверов Linux с помощью простого решения на основе Rsync и Cron.

Требования

Необходимо установить:

  • rsync
  • cron

Если вы хотите включить резервное копирование баз данных MySQL или совместимых с MySQL, то нужна установленная MySQL.

Также предполагается, что у вас есть сервер, который может принимать резервные данные через Rsync. На этом сервере резервного копирования нужно установить rsync и настроить учетные записи с аутентификацией по SSH, чтобы эта роль могла передавать резервные копии в определенную директорию через SSH.

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

Доступные переменные перечислены ниже с их значениями по умолчанию (см. defaults/main.yml):

backup_cron_job_state: present
backup_hour: "3"
backup_minute: "00"

Контролирует, будет ли скрипт резервного копирования вызываться через управляемую задачу cron. Вы должны разбить время резервного копирования между серверами, чтобы сервер резервного копирования не получал огромный объем данных сразу.

backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"

Пользователь, от имени которого будут выполняться задания резервного копирования.

backup_path: /home/{{ backup_user }}/backups

Путь, по которому будет храниться конфигурация резервного копирования. В общем, рекомендуется использовать специальную учетную запись пользователя для резервного копирования, но вы можете установить это значение для любой учетной записи, имеющей соответствующий доступ к директориям, которые необходимо резервировать.

backup_directories:
  - /home/{{ backup_user }}/domains
  - /home/{{ backup_user }}/repositories

Директории для резервного копирования. {{ backup_user }} должен иметь доступ на чтение к этим каталогам. Каждая директория будет синхронизирована с сервером резервного копирования через отдельную команду rsync в скрипте резервного копирования.

backup_exclude_items:
  - .DS_Store
  - cache
  - tmp

Элементы, которые следует исключить из резервного копирования. Каждый элемент будет добавлен новой строкой в файл исключений, используемый командой rsync для резервного копирования. Прочитайте эту статью для объяснения работы опции --exclude.

backup_identifier: id_here
backup_remote_connection: [email protected]

Параметры для управления тем, куда доставляется резервная копия. Предполагается, что вы будете перенаправлять резервные копии на сервер резервного копирования по SSH. Управление ключами SSH и аутентификация должны быть организованы отдельно от этой роли.

backup_remote_base_path: "~/backups"

Полный путь на удаленном сервере резервного копирования, где будут храниться резервные копии (все резервные копии для каждого сервера находятся в директории с именем, соответствующим backup_identifier).

backup_remote_host_name: ''
backup_remote_host_key: ''

Добавьте данные о ключе удаленного хоста, чтобы убедиться, что ключ присутствует и нет ошибок подключения по SSH из-за аутентификации ключом. Оставьте пустым, если вы отключили проверку ключа хоста или если ключ уже добавлен на сервер другим способом.

backup_remote_connection_ssh_options: ''

Добавьте параметры подключения SSH (например, -p [порт]), как указано в руководстве по командам SSH.

backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''

Параметры для резервного копирования баз данных MySQL (или совместимых с MySQL). Обратите внимание, что ansible_ssh_user, используемый при выполнении этой роли, должен иметь возможность добавлять пользователей MySQL, чтобы эта функциональность могла управляться этой ролью. Вместо создания новой учетной записи пользователя MySQL вы можете предоставить существующую с помощью backup_mysql_credential_file, файла параметров, как указано в Руководстве для конечных пользователей по безопасности паролей.

Зависимости

Нет.

Пример Playbook

- hosts: servers

  vars:
    backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
    backup_user: "backupuser"
    backup_remote_connection: [email protected]
    backup_hour: "1"
    backup_minute: "15"
    backup_mysql: false
    backup_directories:
      - /etc/myapp
      - /var/myapp/data
      - /home/myuser

  roles:
    - geerlingguy.backup

Лицензия

MIT / BSD

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

Эта роль была создана в 2017 году Джеффом Гирлингом, автором Ansible for DevOps.

Установить
ansible-galaxy install geerlingguy/ansible-role-backup
Лицензия
mit
Загрузки
6832
Владелец
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns