geerlingguy.backup
Ansible 角色:简单服务器备份
使用简单的 Rsync 和 Cron 解决方案备份 Linux 服务器。
要求
需要安装以下软件:
- rsync
- cron
如果您希望启用 MySQL 数据库备份,还需要安装 MySQL 或兼容 MySQL 的数据库。
假设您有一台可以通过 Rsync 接收备份数据的服务器,并且在这台备份服务器上需要安装 rsync
,并配置具有 SSH 身份验证的帐户,以允许此角色通过 SSH 将备份交付到特定目录。
角色变量
可用变量如下所示,并附有默认值(请参见 defaults/main.yml
):
backup_cron_job_state: present
backup_hour: "3"
backup_minute: "00"
控制备份脚本是否通过管理的 cron 作业调用。您应该在服务器之间错开备份时间,以免备份服务器在 同一时间接收到大量数据。
backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"
备份作业将运行的用户。
backup_path: /home/{{ backup_user }}/backups
备份配置将存储的路径。一般来说,您应该使用一个专用的备份用户帐户,但您可以将其设置为拥有适当访问权限的帐户。
backup_directories:
- /home/{{ backup_user }}/domains
- /home/{{ backup_user }}/repositories
要备份的目录。{{ backup_user }}
必须对这些目录有读取权限。每个目录将通过备份脚本中的单独 rsync
命令同步到备份服务器。
backup_exclude_items:
- .DS_Store
- cache
- tmp
要从备份中排除的项目。每个项目将作为新行添加到备份 rsync
命令使用的排除文件中。阅读 这篇文章 了解 --exclude
选项的工作原理。
backup_identifier: id_here
backup_remote_connection: [email protected]
控制备份交付位置的选项。假设您将通过 SSH 将备份路由到备份服务器。SSH 密钥管理和身份验证应与此角色分开管理。
backup_remote_base_path: "~/backups"
远程备份服务器上存储备份的完整路径(每个服务器的所有备份都位于一个名为 backup_identifier
的目录中)。
backup_remote_host_name: ''
backup_remote_host_key: ''
添加远程主机密钥的详细信息,以确保主机密钥存在,并且没有基于密钥身份验证的 SSH 连接错误。如果您禁用了主机密钥检查,或者主机密钥已通过其他机制添加到服务器,则留空。
backup_remote_connection_ssh_options: ''
添加 SSH 连接选项(例如 -p [port]
),如 SSH 命令手册 中所述。
backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''
备份 MySQL(或兼容 MySQL 的)数据库的选项。请注意,运行此角色时使用的 ansible_ssh_user
必须能够添加 MySQL 用户,以便此功能能够由此角色管理。
您可以提供一个现有的 MySQL 用户帐户,使用 backup_mysql_credential_file
提供一个选项文件,如 密码安全用户使用指南 所述。
依赖项
无。
示例剧本
- hosts: servers
vars:
backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
backup_user: "backupuser"
backup_remote_connection: [email protected]
backup_hour: "1"
backup_minute: "15"
backup_mysql: false
backup_directories:
- /etc/myapp
- /var/myapp/data
- /home/myuser
roles:
- geerlingguy.backup
许可证
MIT / BSD
作者信息
此角色由 Jeff Geerling 于 2017 年创建,他是 Ansible for DevOps 的作者。
ansible-galaxy install geerlingguy.backup