geerlingguy.backup

Ansible 角色:简单服务器备份

CI

使用简单的 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
许可证
mit
下载
17k
拥有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns