fiaasco.borgbackup

Borg备份角色

Debian Ubuntu Rocky Multiple

该角色在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等。因为我们都有不同的系统和平台,所以只要此场景保持运行,可以安全扩展!

进一步阅读

关于项目

Install Borg backup server and client (with rsync.net server support)

安装
ansible-galaxy install fiaasco.borgbackup
许可证
mit
下载
12.9k
拥有者
Full install as a service