backup
Ansible Роль: Резервное копирование для простых серверов
Резервное копирование серверов 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