trellis_backup
Роль для резервного копирования Trellis
Эта роль предназначена для использования с Trellis.
Она позволяет настроить автоматическое резервное копирование с помощью duply.
Она будет:
- устанавливать duplicity и duply
- для каждого
wordpress_site
, который настроен, будет создавать два профиля duply- один для базы данных
- один для загрузок
Она не делает резервную копию кода сайта. Если вам нужно восстановить, сначала необходимо развернуть ваш сайт на новом сервере, а затем восстановить базу данных и загрузки.
Начало работы
Добавьте роль и ее зависимости в файл galaxy.yml
Trellis:
- name: backup
src: xilonz.trellis_backup
version: 2.1.7
Запустите ansible-galaxy install -r galaxy.yml
, чтобы установить новые роли.
Затем добавьте роли в файл server.yml
:
roles:
... другие роли Trellis ...
- { role: backup, tags: [backup] }
Переменные роли
Роль будет считывать данные из словаря wordpress_sites
в Trellis.
Пример:
wordpress_sites:
example.com:
site_hosts:
- canonical: example.com
redirects:
- www.example.com
local_path: ../site # путь к локальному каталогу Bedrock (относительно корня Ansible)
repo: [email protected]:example/example.com.git # замените на URL вашего Git репозитория
repo_subtree_path: site # относительный путь к вашему каталогу Bedrock/WP в репозитории
branch: master
multisite:
enabled: false
ssl:
enabled: false
provider: letsencrypt
cache:
enabled: false
+ backup:
+ enabled: true
+ auto: true
+ target: scp://[email protected]/example.com_backups # любое место, поддерживаемое duplicity
+ schedule: '0 4 * * *' # cron время резервного копирования (измените это значение)
+ purge: false # переключите на true для автоматического удаления старых резервных копий
+ max_age: 1M # временной промежуток для хранения старых резервных копий, используется для команды "purge".
+ full_max_age: 1M # принудительное полное резервное копирование, если последняя полная резервная копия достигла этого возраста.
+ max_full_backups: 1 # количество полных резервных копий для хранения
+ post_actions: # опционально
+ - "curl -L http://ваш-пользовательский-адрес" # команды для выполнения после завершения резервного копирования
Вы можете установить enabled: true
и auto: false
, чтобы установить профили duply, но не планировать фактические резервные копирования. Таким образом, вы можете, например, восстановить вашу продукционную базу данных в режиме ожидания. У вас будут одни и те же профили duply в режиме ожидания и продуктивности, но только продуктивный сервер будет фактически создавать резервные копии.
Читать все форматы URL duplicity (и потенциальные цели).
vault.yml
Добавьте учетные данные для резервной копии в vault.yml
(в зависимости от вашей цели это могут быть ключи S3, учетные данные FTP или ничего, если вы резервируете локально...). Вы также можете встроить свои учетные данные в URL-адрес цели, но использование метода vault.yml
более безопасно.
example.com:
env:
backup_target_user: user
backup_target_pass: password
Подготовка сервера
Запустите trellis provision --tags backup environment
или ansible-playbook server.yml -e env=environment --tags backup
, когда нужно запустить эту роль.
Восстановление
Как только профили будут установлены, вы сможете легко создать резервную копию и восстановить сервер. website_name
— это имя вашего сайта в wordpress_sites.yml
с точками, замененными на нижние подчеркивания (example_com
). Вы можете использовать ls /etc/duply
, если не уверены в названиях ваших профилей duply.
sudo duply website_name_database restore
sudo duply website_name_uploads restore
Изменения в 2.0
- зависимость paramiko была удалена
- больше не нужно перечислять роль
Stouts.backup
в плейбукеserver.yml
, так как она импортируется в задачи - вам нужна последняя версия Trellis, так как роль использует плагин Mysql
auth_socket
для подключения к базе данных
Известные проблемы с поддержкой SCP
Чтобы использовать цель SCP, вам необходимо, чтобы paramiko был установлен на вашем сервере.
Автоматическая установка paramiko была удалена в 2.0. Если вам это нужно, вы должны сделать это вручную или добавив его в задачи Trellis. Тем не менее, существует известная проблема, когда paramiko сбой возникает в настройках SendEnv
в файле ssh_config
, созданном Trellis.
Поддержка S3
Существует известная проблема с загрузкой в корзины S3, которые принимают только подписи V4. Чтобы успешно загрузить, вам нужно добавить немного в ключ backup:
вашего файла wordpress_sites.yml
:
wordpress_sites:
example.com:
backup:
...
+ params:
+ - 'export S3_USE_SIGV4="True"'
Лицензия
MIT
Авторы
Эта роль была в первую очередь разработана Jill Royer, и в настоящее время поддерживается Arjan Steenbergen.
Эта роль требует роль ansible-backup от La France insoumise. Она должна устанавливаться ansible автоматически.
Install automated backups on Trellis using duply
ansible-galaxy install Xilonz/trellis-backup-role