backup
Ansible Роль: Резервное Копирование
Выполняйте ежедневные, еженедельные и ежемесячные резервные копии файлов, баз данных MySQL и PostgreSQL на серверах Debian и Ubuntu.
Ротация резервных копий настраивается, например, вы можете использовать схему Дедушка-Отец-Сын
Зависимости
нет
Установка
Ansible 2+
Используйте ansible galaxy cli:
ansible-galaxy install alphanodes.backup
Переменные Роли
Доступные переменные перечислены ниже вместе с значениями по умолчанию (см. defaults/main.yml
):
backup_dir: /srv/backups
Каталог для резервных копий. Убедитесь, что на этом разделе диска достаточно свободного места. Используйте кавычки, чтобы избежать проблем с преобразованием (например, с to_nice_yaml).
backup_dir_mode: '0755'
Права доступа к каталогу для backup_dir
.
backup_dir_owner: root
Владелец каталога для backup_dir
.
backup_dir_group: root
Группа каталога для backup_dir
.
backup_max_days: 7
Максимальное количество дней для ежедневных наборов резервных копий. Это означает, что хранятся только backup_max_days
наборов (дней). Более старые наборы удаляются автоматически. Значения должны быть => 1.
backup_max_weeks: 1
Максимальное количество недель для еженедельных наборов резервных копий. Это означает, что хранятся только backup_max_weeks
наборов (недель). Более старые наборы удаляются автоматически. Значения должны быть => 1. Еженедельная резервная копия создается в первый день недели. В этот день создается только эта резервная копия (и никакая ежедневная - чтобы избежать дублирования).
backup_max_months: 1
Максимальное количество месяцев для ежемесячных наборов резервных копий. Это означает, что хранятся только backup_max_months
наборов (месяцев). Более старые наборы удаляются автоматически. Значения должны быть => 1. Ежемесячная резервная копия создается в первый день месяца. В этот день создается только эта резервная копия (и никакая ежедневная или еженедельная - чтобы избежать дублирования).
backup_remote_host: ''
Имя хоста для синхронизации резервных копий, используемое при backup_remote_transfer
.
backup_remote_port: ''
Порт для синхронизации резервных копий, используемый при backup_remote_transfer
.
backup_remote_dir: ''
Удаленный каталог для backup_remote_host
, используемый при backup_remote_transfer
.
backup_remote_excludes:
- '*.journal'
- '.nfs*'
- '*.tar'
Эти файлы исключены из синхронизации с удаленным хостом. Это используется, только если backup_remote_transfer
- это rsync
.
backup_rsync_options: '-avz --delete'
Опции rsync для backup_remote_transfer
с использованием rsync
.
backup_remote_transfer: rsync
Тип синхронизации. Возможные значения: rsync или lftp.
backup_remote_user: ''
Пользователь для удаленной синхронизации. Это используется только с backup_remote_transfer
, если это lftp.
backup_remote_password: ''
Пароль для удаленной синхронизации. Это используется только с backup_remote_transfer
, если это lftp.
backup_with_borg: ''
Если должен быть выполнен backupborg.
backup_db_dump_format: .sql.gz
Непакованные SQL файлы (.sql), а также bzip2 (.bz2), gzip (.gz) и xz. В данный момент используется только для дампов MySQL.
backup_with_mysql: false
Выполнять дамп резервного копирования MySQL (MariaDB). Все базы данных хранятся в отдельных файлах.
backup_with_postgresql: false
Выполнять дамп резервного копирования PostgreSQL. Все базы данных хранятся в отдельных файлах.
backup_with_mongodb: false
Выполнять дамп резервного копирования MongoDB. Все базы данных хранятся в одном архивном файле.
backup_mongodb_options: '--archive --gzip'
Опции для дампа mongodb.
backup_mysql_db_excludes:
- performance_schema
- information_schema
- sys
backup_mysql_single_transaction: true
# backup_mysqldump_options: '--extended-insert=true --opt --single-transaction'
Пользовательские опции mysql (всегда используется sql.gz). Если установлено, используется нативный mysql_dump (без ansible). По умолчанию это не установлено.
backup_postgresqldump_options: "--no-owner -Fc"
Опции дампа PostgreSQL.
backup_create_hashfiles: false
Создать хэш-файлы всех наборов резервных копий.
backup_files_unsafe_writes: false
Если backup_files_unsafe_writes
равно yes и измененные файлы обнаружены при создании tar-файлов, ошибки не сообщаются. tar запускается с дополнительными опциями --warning=no-file-removed --warning=no-file-changed --warning=no-file-ignored
. Эта опция может быть переопределена для каждого набора с помощью unsafe_writes
.
backup_sets: []
Наборы резервных копий для резервного копирования файлов. name
используется как имя файла резервной копии. src
- это каталог файла, который должен быть сохранен. unsafe_writes
переопределяет backup_files_unsafe_writes
. excludes
- это список, который можно использовать для исключения файлов или каталогов.
backup_one_per_day_limit: true
Создавать только один набор резервных копий в день. Существующие наборы резервных копий того же дня будут удалены.
#sync_master: anything
Если sync_master определен, резервное копирование будет пропущено. Вы можете использовать его для распределённых сред.
backup_skip_sync_clients: true
Если sync_master определен, это означает, что это sync_client.
backup_pre_commands: []
Список команд, которые должны быть выполнены перед созданием дампа резервного копирования.
backup_post_commands: []
Список команд, которые выполняются после создания дампа резервного копирования.
Пример Playbook
- hosts: server-name
vars:
backup_sets:
- name: etc
src: /etc
roles:
- alphanodes.backup
Расширенный пример Playbook
- hosts: server-name
vars:
backup_max_days: 14
backup_max_weeks: 4
backup_max_months: 6
backup_with_postgresql: true
backup_dir_mode: '0770'
backup_dir_group: postgres
backup_sets:
- name: etc
src: /etc
- name: jenkins
src: /var/lib/jenkins
unsafe_writes: true
excludes:
- builds
- workspace
roles:
- alphanodes.backup
Лицензия
GPL Версия 3
Информация об авторе
Эта роль была создана в 2018 году AlphaNodes.
Run daily backups for files, MySQL databases and PostgreSQL databases
ansible-galaxy install AlphaNodes/ansible-backup