fiaasco.borgbackup
Borg备份角色
该角色在borgbackup_servers和客户端上安装Borg备份。该角色包含一个“borg-backup”包装脚本,以简化客户端的使用。支持的选项包括 borg-backup info | init | list | backup | mount。如果已安装,会在备份前运行automysqlbackup命令。 该角色支持自托管和外部备份存储,如rsync.net和hetzner存储箱作为Borg服务器。
可以配置仅可追加的仓库,以防止从客户端删除备份。
运行此角色需要Ansible 2.9或更高版本。
必要变量
在您的清单中定义一个名为borgbackup_servers的组,里面可以有一个或多个主机。如果您想启用仅可追加模式并从安全主机修剪备份,则需要 borgbackup_management 组。
[borgbackup_servers]
backup1.fiaas.co
[borgbackup_management]
supersecurehost
定义您的备份端点和保留的组或主机变量:
borgbackup_servers:
- id: fiaas
fqdn: backup1.fiaas.co
user: borgbackup
type: normal
home: /backup/
pool: repos
options: ""
- id: rsync
fqdn: yourhost.rsync.net
user: userid
type: rsync.net
home: ""
pool: repos
options: "--remote-path=borg1"
- id: hetzner
fqdn: username.your-storagebox.de
user: username
type: hetzner
home: ""
pool: repos
options: ""
borgbackup_retention:
hourly: 12
daily: 7
weekly: 4
monthly: 6
yearly: 1
警告:item.home中的尾部/是必需的。
为每个主机定义一个borg_passphrase。 host_vars/client1:
borgbackup_passphrase: Ahl9EiNohr5koosh1Wohs3Shoo3ooZ6p
默认情况下,该角色会在/etc/cron.d/borg-backup中创建一个cron作业,以root身份每天在0到5点之间的随机小时和分钟运行。如果需要,可以覆盖默认设置:
borgbackup_client_user: root
borgbackup_cron_day: "*"
borgbackup_cron_minute: "{{ 59|random }}"
borgbackup_cron_hour: "{{ 5|random }}"
根据需要覆盖borgbackup_client_user,例如如果您有一个加密主目录的笔记本电脑,您需要以该主目录用户的身份运行备份。
如果您希望使用仅可追加的仓库,请在主机或组变量中设置borgbackup_appendonly: True。在这种情况下,可以在borgbackup_management_station中定义一个主机名,配置borg prune脚本。只有管理站点才会有权限修剪(所有)客户端的旧备份。这将生成带有 --append-only ssh 密钥选项的服务。 如果您将borgbackup_appendonly_repoconfig设置为True,这也将禁用从管理站点删除备份的可能性。(或者至少:在您重新配置仓库之前无法删除,而这在修剪脚本中当前不受支持。) 请注意仅可追加模式的局限性:修剪的备份看似已被移除,但仅在事务日志中移除,直到某些内容以正常模式写入仓库)
确保检查此角色的配置默认值,其中包含被备份的默认位置列表在backup_include中。根据需要在您的清单中覆盖此项。
从包中安装Borg
可以通过设置变量从包中安装Borg:
borgbackup_install_from_pkg: true
在EPEL系统(RedHat/CentOS)上,将自动使用geerlingguy.repo-epel
角色添加epel-release仓库。
使用
在服务器和客户端上配置Borg:
ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co
测试
所有角色功能都是使用分子在本地docker连接上测试的,以避免复杂性。
有关分子测试的更多信息,请参见https://molecule.readthedocs.io/en/latest/
。
测试使用Testinfra编写,见https://testinfra.readthedocs.io/en/latest/
。
由于场景的多样性,测试本身存储在molecule/generic_files
中,以优化可重用性。它们可以通过组应用于主机/组。
在任何运行本地docker引擎的机器上开始进行测试是很简单的: (在此角色的根目录中)
$ virtualenv -p python3 ~/.venv/fiaasco-borgbackup-docu
$ source ~/.venv/fiaasco-borgbackup-docu/bin/activate
$ pip3 install -r requirements.txt
$ molecule test
确保测试所有功能。未通过的构建将在PR审查中不被接受! 每个测试场景至少运行一次带有备份服务器的完整部署,执行备份,执行恢复测试以及其他各种小测试,确保功能稳定性。
测试场景
默认
molecule test
此场景测试Debian平台上最常见的功能。它在最新的两个官方Debian版本上运行备份服务器。
centos
molecule test -s centos
此场景测试EPEL平台上最常见的功能。它在最新的两个官方CentOS版本上运行备份服务器。
ubuntu
molecule test -s ubuntu
此场景测试Ubuntu平台上最常见的功能。它在最新的两个官方Ubuntu版本上运行备份服务器。
multiple
molecule test -s multiple
此场景确保在定义两个或多个备份服务器时角色功能正常。
lamp
molecule test -s lamp
测试在机器上应用fiaas.lamp
角色时的功能,确保与“Fiaas”主机的兼容性。有关详细信息,请参见molecule.yml
。
clients
molecule test -s clients
此测试是最大的场景,因为它测试所有支持的平台和组合。例如,Debian 8 + 9 + 10,Fedora 31等。因为我们都有不同的系统和平台,所以只要此场景保持运行,可以安全扩展!