paulfantom.restic
Ansible 角色: restic
重要 - 项目已归档
该项目由于我不再维护而已归档(我不再使用它)。如果有人愿意维护它,我会很高兴地重新启用。如果你是这样的人,请给我发送电子邮件至 paulfantom@gmail.com。
描述
部署 restic - 快速、安全、高效的备份程序。
需求
- Ansible > 2.2
- 部署机器上需要安装 bzip2(与 ansible 安装在同一台机器上)
角色变量
所有可以被覆盖的变量存储在 defaults/main.yml 文件中,以及下面的表格中。
名称 | 默认值 | 描述 |
---|---|---|
restic_version |
0.9.6 | restic 软件包版本,也可以接受 latest 作为参数。 |
restic_user |
"root" | 运行 restic 的系统用户 |
restic_group |
"root" | 运行 restic 的系统组 |
restic_shell |
"/bin/false" | restic 用户的 shell,如果你想能够 su 切换到这个用户,请更改它 |
restic_install_path |
"/usr/local/bin" | restic 二进制文件的安装目录 |
restic_cron_mailto |
restic_user | 发送 restic cron 结果的邮件接收人,设置为 "" 表示不发送邮件 |
restic_cron_stdout_file |
null | 记录 restic 输出的文件,null 表示包含在邮件中,使用 /dev/null 表示丢弃 |
restic_cron_stderr_file |
null | 记录 restic 错误的文件,null 表示包含在邮件中,使用 /dev/null 表示丢弃 |
restic_sudo_command_whitelist |
[] | 允许 restic 使用 sudo 运行的命令白名单 |
restic_repos |
[] | restic 存储库和 cron 任务配置。更多信息见 defaults/main.yml |
安全性
为了确保高安全性,此角色可以允许 restic 以非 root 用户身份运行,并仍然允许只读访问文件。此功能是通过遵循来自 restic 仓库的 PR#1483 实现的。
如果你需要以其他用户身份运行某些工具,请确保将这些命令列在 restic_sudo_command_whitelist
中,如下:
restic_sudo_command_whitelist:
- command: /usr/bin/some_backup_related_command_that_needs_sudo
runas: root
然后,在你的实际备份命令中,将命令添加为 sudo -u root /usr/bin/some_backup_related_command_that_needs_sudo
。
辅助工具
此角色还会将辅助脚本安装到 restic_install_path
。这些脚本以你的存储库命名,并将确保环境变量对于该存储库是正确的。
例如,如果你有一个名为 testrepo
的 restic 存储库,你可以使用 restic-testrepo
命令,它将使用正确的环境变量执行 restic
以操作该存储库。
示例
Playbook
在 playbook 中使用它,如下所示:
- hosts: all
roles:
- paulfantom.restic
本地测试
本地测试此角色的首选方法是使用 Docker 和 molecule (v2.x)。你需要在你的系统上安装 Docker。查看快速入门,了解适合你系统的 Docker 包。 你需要的所有软件包可以在一行中指定:
pip install ansible 'ansible-lint>=3.4.15' 'molecule>2.13.0' docker 'testinfra>=1.7.0' jmespath
这应类似于 .travis.yml
文件中的 install
部分列出的内容。
安装测试套件后,可以通过运行以下命令进行测试:
molecule test --all
有关 molecule 的更多信息,请访问他们的 文档。
Travis CI
结合 molecule 和 Travis CI,可以测试新 PR 在与多个 ansible 版本和多个操作系统一起使用时的行为。这也允许为不同的角色配置创建测试场景。结果测试矩阵相当大,所需时间比本地测试要长,因此请耐心等待。
贡献
请参见 贡献指南。
许可证
该项目根据 MIT 许可证授权。有关更多详细信息,请参见 LICENSE。