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 和贡献者。