notmycloud.proxmox_backup_client
Ansible-Proxmox-备份客户端
这个角色将会在基于Debian的操作系统上安装和配置Proxmox备份客户端。 您可以在这里找到Proxmox备份客户端的文档。Proxmox Backup Client。
变量
| 变量 | 必须 | 默认 | 描述 | 
|---|---|---|---|
| proxmox_backup | 是 | 包含您此角色配置的字典 | |
| .server | 是 | 包含您Proxmox备份服务器的连接信息的字典 | |
| .server.user | 是 | 访问PBS的用户名,例如:backup@pbs | |
| .server.pass | 是 | 提供用户名的密码或令牌 | |
| .server.host | 是 | PBS的主机名/FQDN/IP | |
| .server.datastore | 是 | 存储备份的存储库 | |
| .server.port | 否 | 8007 | PBS API的自定义端口 | 
| .server.fingerprint | 否 | 服务器证书的指纹,在仪表板上找到 | |
| .client | 是 | 包含PBC客户端配置的字典 | |
| .client.archives | 是 | 需要备份的项目数组 | |
| .client.archives.name | 是 | 上传的归档文件名称,不能包含'/'字符 | |
| .client.archives.path | 是 | 备份的路径 | |
| .client.archives.format | 是 | 常见类型有.pxar用于文件归档和.img用于块设备映像 | |
| .client.encrypt | 否 | 包含客户端加密设置的字典 | |
| .client.encrypt.enable | 是 | 否 | 启用或禁用客户端加密 | 
| .client.encrypt.pass | 否 | 加密密钥的密码(如果需要密码保护) | |
| .client.encrypt.key | 是 | ~/.config/proxmox-backup/encryption-key.json | 存储加密密钥的路径 | 
| .client.encrypt.master | 否 | 本地master-public.pem的路径,以复制到客户端 | |
| .client.output | 否 | 包含stdout日志格式选项的字典 | |
| .client.output.format | 否 | text | 可能的值有text、json、json-pretty | 
| .client.output.border | 否 | 如果设置,将不显示表格边框 | |
| .client.output.header | 否 | 如果设置,将不显示表格标题 | |
| .client.include_devices | 否 | 包含的挂载点数组,默认跳过挂载点 | |
| .client.skip_lost_found | 否 | 否 | 跳过lost+found目录 | 
| .client.schedule.calendar | 否 | '--* 4:00:00' | Systemd定时器OnCalendar字符串,默认每天凌晨4点 | 
| .client.schedule.runifmissed | 否 | 否 | 如果错过最后的启动时间则触发服务 | 
| .client.exclude | 否 | 包含.pxarexclude文件设置的数组 | |
| .client.exclude[#].path | 是 | .pxarexclude的文件路径(父文件夹) | |
| .client.exclude[#].enabled | 是 | 创建排除文件,如果不需要则删除 | |
| .client.exclude[#].rules | 是 | 排除规则的数组,可以包括明确的包含 | 
默认配置
default_config:
  client:
    encrypt:
      enable: false
      key: ~/.config/proxmox-backup/encryption-key.json
    output:
      format: text
    skip_lost_found: no
    schedule:
      calendar: '*-*-* 4:00:00' # 每天凌晨4点
      runifmissed: no
示例
所有级别的组变量(YAML格式)。
pbs_global_server:
    user: backup@pbs
    pass: ProxmoxBackupPassword
    host: pbs.example.com
    datastore: backups
    fingerprint: 7f:f1:ee:...:3d:de:2b
pbs_global_client:
    skip_lost_found: yes
    exclude:
    - path: /
        rules:
        - /boot/*
        - /tmp/*
    - path: /var/
        rules: 
        - /run/*
        - /log/*.[0-9]
        - /log/*.[0-9].*
        - /log/**/*.[0-9]
        - /log/**/*.[0-9].*
    archives:
    - name: root
        path: /
        format: .pxar
    - name: boot
        path: /boot
        format: .pxar
主机级别的变量(YAML格式)。
pbs_client:
archives:
    - name: ssd
    path: /ssd
    format: .pxar
    - name: data
    path: /Data
    format: .pxar
exclude:
    - path: /ssd/qbit/
    rules:
        - /incomplete/*
    - path: /ssd/media/
    rules:
        - /_transcode/temp/*
        - /_transcode/log/*
        - /converted/*.jpg
        - /converted/*.mp4
        - /.Trash*
合并组默认值与主机覆盖值
pbs_global_client是一个所有组变量。 pbs_client是主机变量。 combine(pbs_client, recursive=true)将合并字典。合并中的字典将优先于被管道传递的字典。可以链式操作。
    # 合并数组以免一个覆盖另一个
  - name: 合并PBS客户端数组
    set_fact:
      pbs_client_merged:
          archives: "{{ pbs_global_client.archives + pbs_client.archives }}"
          exclude: "{{ pbs_global_client.exclude + pbs_client.exclude }}"
  
  - name: 设置Proxmox备份客户端
    include_role:
      name: proxmox-backup-client
    vars:
      proxmox_backup:
        server: "{{ pbs_global_server }}"
        client: "{{ pbs_global_client | combine(pbs_client, recursive=true) | combine(pbs_client_merged, recursive=true) }}"
