---
# pbs_*
pbs_datastores:
  - name: zfs_backup
    path: /backup/pbs_data
    gc_schedule: "sat 19:00"

pbs_prune_jobs:
  - name: standard
    schedule: "sat 18:15"
    store: zfs_backup
    keep_last: 1
    keep_hourly: 3
    keep_daily: 3

pbs_permissions:
  - user: user_pve5@pbs
    datastore: zfs_backup
    role: DatastoreBackup

pbs_users:
  - name: user_pve5
    password: "{{ lookup('viczem.keepass.keepass', 'pbs_pve_user', 'password') }}"
    realm: pbs
# rpool ist unverschlüsselt als Boot-Medium
# entschlüsseln nach Boot mit: sudo zpool import -d /dev/disk/by-id/ -a && sudo zfs mount -a  -l

## backup
### sudo zpool create -o ashift=12 -o feature@encryption=enabled -O encryption=on -O keylocation=prompt -O keyformat=passphrase backup /dev/disk/by-id/ata-TOSHIBA_MG09ACA18TE_Z1B0A28LFJDH

# mgrote.zfs_manage_datasets
### mgrote_zfs_extra
# Variablen für mgrote.zfs_health/trim/scrub/zed/arc_mem/ sind zusammengefasst unter zfs_extra_*
zfs_datasets: # DatenPools werden hier nicht verwaltet
  # rpool - System-Datasets
  - dataset: rpool
    state: present
    compression: zstd
    sync: disabled
    xattr: sa
    dnodesize: auto
    atime: on # noqa yaml[truthy]
    snapdir: hidden
    reservation: 1G
    refreservation: 10G
    acltype: posix
  - dataset: rpool/ROOT
    state: present
    refreservation: 10G
  - dataset: rpool/ROOT/pbs-1
    state: present
    refreservation: 10G
    acltype: posix # https://docs.ansible.com/ansible-core/2.14/playbook_guide/playbooks_privilege_escalation.html#risks-of-becoming-an-unprivileged-user ; sonst kann die dotfiles-Rolle kein setfacl machen
  # backup-pool
  - dataset: backup/pbs_data
    state: present
    quota: 1TB
  - dataset: backup/pve5
    state: present
    canmount: off # noqa yaml[truthy]
    compression: zstd
    sync: disabled
    xattr: sa
    dnodesize: auto
    atime: on # noqa yaml[truthy]
    snapdir: hidden
    reservation: 1G
    acltype: posix # https:///docs.ansible.com/ansible-core/2.14/playbook_guide/playbooks_privilege_escalation.html#risks-of-becoming-an-unprivileged-user ; sonst kann die dotfiles-Rolle kein setfacl machen
  - dataset: backup/pve5/pve_backup
    state: present
    recordsize: 1M
  - dataset: backup/pve5/videos
    state: present
    recordsize: 1M
  - dataset: backup/pve5/music
    state: present
    recordsize: 1M
  - dataset: backup/pve5/tmp
    state: present
  - dataset: backup/pve5/archiv
    state: present
  - dataset: backup/pve5/bilder
    state: present
    recordsize: 1M
  - dataset: backup/pve5/scans
    state: present
  - dataset: backup/pve5/restic
    state: present
  - dataset: backup/pve5/backup
    state: present
  - dataset: backup/pve5/buecher
    state: present
  - dataset: backup/pve5/programme
    state: present
  - dataset: backup/pve5/vm
    state: absent # todo
# Variablen für mgrote.zfs_health/trim/scrub/zed/arc_mem/ sind zusammengefasst unter zfs_extra_*
zfs_extra_arc_max_size: "4294967296" # 4GB in Bytes
zfs_extra_zfs_pools:
  - name: "rpool"
    systemd_timer_schedule: "*-01,04,07,10-01 23:00" # jeden ersten eines jeden Quartals
  - name: "backup"
    systemd_timer_schedule: "*-01,04,07,10-01 23:00"

### mgrote_zfs_sanoid
sanoid_snaps_enable: true
sanoid_datasets:
  ### rpool
  - path: rpool
    recursive: 'no'
    snapshots: true
    template: 'pve3tage'
  - path: rpool/ROOT
    recursive: 'no'
    snapshots: true
    template: 'pve3tage'
  - path: rpool/ROOT/pbs-1
    recursive: 'no'
    snapshots: true
    template: 'pve3tage'
  ### backup
  - path: backup/pbs_data
    recursive: 'no'
    snapshots: true
    template: '7tage'
  - path: 'backup/pve5/videos'
    template: '14tage'
    recursive: 'yes'
    snapshots: true
  - path: 'backup/pve5/music'
    template: '14tage'
    recursive: 'yes'
    snapshots: true
  - path: 'backup/pve5/tmp'
    template: '14tage'
    recursive: 'yes'
    snapshots: true
  - path: 'backup/pve5/pve_backup'
    template: '14tage'
    recursive: 'yes'
    snapshots: true
  - path: 'backup/pve5/archiv'
    template: '14tage'
    recursive: 'yes'
    snapshots: true
  - path: backup/pve5/bilder
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'
  - path: backup/pve5/scans
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'
  - path: backup/pve5/backup
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'
  - path: backup/pve5/restic
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'
  - path: backup/pve5/programme
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'
  - path: backup/pve5/buecher
    recursive: 'no' # noqa yaml[truthy]
    snapshots: true
    template: '14tage'

### mgrote_rsync
rsync_host_role: destination