xilonz.trellis_backup
trellis-backup-role
这个角色是为Trellis设计的。
它允许使用duply设置自动备份。
它将:
- 安装duplicity和duply
- 为每个配置的
wordpress_site
安装两个duply配置- 一个用于数据库
- 一个用于上传
它不备份网站代码。如果需要恢复,必须先在新服务器上部署网站,然后再恢复数据库和上传内容。
入门
将角色及其依赖项添加到Trellis的galaxy.yml
文件中:
- name: backup
src: xilonz.trellis_backup
version: 2.1.7
运行ansible-galaxy install -r galaxy.yml
来安装新角色。
然后,将角色添加到server.yml
中:
roles:
... 其他Trellis角色 ...
- { role: backup, tags: [backup] }
角色变量
该角色将从Trellis中的wordpress_sites
字典读取。
示例:
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 # 替换为你的Git仓库URL
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://your-custom-endpoint" # 在备份完成后运行的命令
你可以设置enabled: true
和auto: false
来安装duply配置,但不实际安排备份。这样,你可以在暂存环境中恢复生产数据库。你将在暂存和生产环境中拥有相同的duply配置,但只有生产服务器实际创建备份。
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
)。如果不确定你的duply配置名称,可以使用ls /etc/duply
。
sudo duply website_name_database restore
sudo duply website_name_uploads restore
2.0版本的变更
- 移除了paramiko依赖
- 不再需要在
server.yml
脚本中列出Stouts.backup
角色,因为它已在任务中导入 - 你需要使用较新版本的Trellis,因为该角色使用Mysql
auth_socket
插件连接到数据库
SCP支持已知问题
要使用SCP目标,你需要在服务器上安装paramiko。
2.0版本移除了paramiko的自动安装。如果你需要,可以手动安装或通过将其添加到Trellis任务中。然而,存在一个已知问题,即paramiko在Trellis创建的ssh_config
中的SendEnv
设置下崩溃。
S3支持
当上传到仅接受V4签名的S3存储桶时,存在已知问题。为了成功上传,你需要在wordpress_sites.yml
的backup:
键下添加一点内容:
wordpress_sites:
example.com:
backup:
...
+ params:
+ - 'export S3_USE_SIGV4="True"'
许可证
MIT
作者
此角色主要由Jill Royer开发,目前由Arjan Steenbergen维护。
此角色需要由La France insoumise提供的ansible-backup角色。ansible应会自动安装此角色。