borgbase.ansible_role_borgbackup
Ansible 角色:BorgBackup 客户端
使用 BorgBackup 和 Borgmatic 设置加密、压缩和去重的备份。当前支持 Debian/Ubuntu、CentOS/Red Hat/Fedora、Archlinux 和 Manjaro。
与 BorgBase.com 配合使用效果很好 - 一个简单安全的 Borg 存储库托管。有关通过 Ansible 管理 BorgBase 存储库的内容,请参阅 Andy Hawkins 的 BorgBase Collection。
主要功能
- 从 PyPi 或发行版包安装 Borg 和 Borgmatic
- 设置 Borgmatic 配置
- 使用 Cron 或 Systemd timer 定期安排备份
重大变更
- 旧版本的此角色为创建和检查备份设置了一个单独的 Cron 任务。最近的 Borgmatic 版本已经在 Borgmatic 中管理此功能。因此,该额外的 Cron 任务将由此角色删除。
- 旧版本的此角色只支持 Cron 排程。如果您使用 Systemd timers,请确保先删除
/etc/cron.d/borgmatic中的 Cron 任务。该角色在尝试同时使用两个定时器时也会提示您。
示例剧本,使用 root 作为备份用户和 Cron 定时器
- hosts: all
roles:
- role: borgbase.ansible_role_borgbackup
borg_encryption_passphrase: CHANGEME
borg_repository:
- ssh://[email protected]/./repo
borg_source_directories:
- /var/www
borgmatic_hooks:
before_backup:
- echo "`date` - Starting backup."
postgresql_databases:
- name: users
hostname: database1.example.org
port: 5433
示例剧本,使用服务用户和 Systemd 定时器
- hosts: all
roles:
- role: borgbase.ansible_role_borgbackup
borg_encryption_passphrase: CHANGEME
borg_repository: ssh://[email protected]/./repo
borgmatic_timer: systemd
borg_user: "backupuser"
borg_group: "backupuser"
borg_source_directories:
- /var/www
borg_retention_policy:
keep_hourly: 3
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
安装
从 Ansible Galaxy 下载
$ ansible-galaxy install borgbase.ansible_role_borgbackup
从 Github 克隆最新版本
$ git clone https://github.com/borgbase/ansible-role-borgbackup.git roles/ansible_role_borgbackup
角色变量
必需变量
borg_repository:存储库的完整路径。可以是您自己的服务器或 BorgBase.com 存储库。如果要备份到多个存储库,可以使用列表。
可选变量
borg_dep_packages:要安装borg(backup)和borgmatic的依赖包。borg_distro_packages:包含borg(backup)和borgmatic的发行版包名称,仅在borg_install_method设置为package时使用。borg_encryption_passcommand:此命令的标准输出用于解锁加密密钥。borg_encryption_passphrase:用于 repokey 或密钥文件的密码。如果存储库未加密,则为空。borg_exclude_from:从一个或多个单独命名的文件读取排除模式,每行一个模式。borg_exclude_patterns:要从备份中排除的路径或模式。有关更多信息,请参见 官方文档。borg_install_method:默认情况下使用pip安装 borgmatic。要通过您的发行版包管理器进行安装,将此设置为package,并(如有必要)覆盖borg_distro_packages变量以包含安装 borgmatic 所需的发行版包名称。请注意,许多发行版提供过时版本的 borgbackup 和 borgmatic;请自行使用。borg_require_epel:在基于 RHEL 的发行版上使用borg_install_method: package时,EPEL 存储库是必需的。要禁用检查(例如,在使用自定义镜像而不是epel-release包时),将其设置为false。默认值为{{ ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora' }}(即在企业 Linux 基于的发行版上为true)。borg_lock_wait_time:配置获取存储库/缓存锁的最大等待时间(秒)。默认值为 5 秒。borg_one_file_system:不跨文件系统边界。默认值为true。borg_pip_packages:要安装borg(backup)和borgmatic的依赖包(pip)。borg_remote_path:远程 borg 可执行文件的路径。默认为borg。borg_remote_rate_limit:远程网络上传速率限制,以 kiBytes/秒为单位。borg_retention_policy:每个类别(每日、每周、每月等)保留的备份数量的保留政策。borg_source_directories:要备份的本地文件夹列表。默认是/etc/hostname,以防止备份为空。borg_ssh_key_name:SSH 公私钥的名称。默认id_ed25519。borg_ssh_key_file_path:要使用的 SSH 密钥。默认~/.ssh/{{ borg_ssh_key_name }}。borg_ssh_key_type:用于生成 SSH 私钥的算法。选择:rsa、dsa、rsa1、ecdsa、ed25519。默认值:ed25519。borg_ssh_command:替代 "ssh" 的命令。这可以用来指定 SSH 选项。borg_version:强制安装特定的 borg 版本。borg_venv_path:存储borg(backup)和borgmatic的虚拟环境的路径。borgmatic_check_last:要检查的存档数量。默认值为3。borgmatic_checks:一致性检查列表。默认进行每月检查。有关所有选项,请参见 文档。borgmatic_config_name:用于 Borgmatic 配置文件的名称。默认值为config.yaml。borgmatic_timer_hour:定期创建和修剪 cron/systemd 定时任务执行的小时。默认值为{{ 6 | random }}。borgmatic_timer_minute:定期创建和修剪 cron/systemd 定时任务执行的分钟。默认值为{{ 59 | random }}。borgmatic_hooks:监视备份的钩子,例如使用 Healthchecks。有关更多信息,请参见 官方文档。borgmatic_timer:如果设置了该变量,则安装一个定时器。必须在cron和systemd之间做出选择。borgmatic_relocated_repo_access_is_ok:绕过关于已移动存储库的 Borg 错误。默认值为false。borgmatic_store_atime:将 atime 存储到归档中。默认值为true。borgmatic_store_ctime:将 ctime 存储到归档中。默认值为true。borgmatic_version:强制安装特定的 borgmatic 版本。borg_user:创建备份的用户名称(服务帐户)。borg_group:创建备份的组名称(服务帐户)。
贡献
欢迎提出 pull requests(PR),只要它们为有意义数量的用户添加相关功能。所有 PR 都会测试样式和功能。要在本地运行测试(需要 Docker):
$ pip install -r requirements-dev.txt
$ molecule test
许可证
MIT/BSD
作者
© 2018-2023 Manuel Riel 和贡献者。
