From ba59094b4b79f222c5ac958bf9eac02f1ad0e755 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:16:31 +0100 Subject: [PATCH 001/131] vars --- host_vars/pbs.mgrote.net.yml | 10 +++++----- host_vars/pve5.mgrote.net.yml | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index f9315299..0fb8b394 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -70,11 +70,11 @@ zfs_extra_zfs_pools: sanoid_snaps_enable: true ## syncoid -sanoid_syncoid_destination_host: true -sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" -sanoid_syncoid_timer: '*-*-* *:00:00' # jede Stunde -sanoid_syncoid_bwlimit: 50M # 30MB/s -sanoid_syncoid_datasets_sync: +sanoid_syncoid_destination_host: false # kann weg +sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" # kann weg +sanoid_syncoid_timer: '*-*-* *:00:00' # jede Stunde # kann weg +sanoid_syncoid_bwlimit: 50M # 30MB/s # kann weg +sanoid_syncoid_datasets_sync: # kann weg - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann destination_mount_check: backup destination_dataset: backup/pve5/pve_backup diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 34e3adc6..c01af5c6 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -100,8 +100,9 @@ zfs_extra_zfs_pools: ### mgrote_zfs_sanoid sanoid_snaps_enable: true ## enable sending snaps -sanoid_syncoid_source_host: true -sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" +sanoid_syncoid_source_host: false # kann weg +sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" # kann weg + sanoid_datasets: ### hdd_data - path: 'hdd_data/videos' -- 2.43.0 From a626205272f4a2aa2340b33b2bc631ae26073499 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:17:23 +0100 Subject: [PATCH 002/131] dfgd --- roles/mgrote_rsync/README.md | 85 +++++++++++++++++++ roles/mgrote_rsync/defaults/main.yml | 49 +++++++++++ roles/mgrote_rsync/handlers/main.yml | 5 ++ roles/mgrote_rsync/tasks/destination.yml | 85 +++++++++++++++++++ roles/mgrote_rsync/tasks/main.yml | 78 +++++++++++++++++ roles/mgrote_rsync/tasks/snaps.yml | 46 ++++++++++ roles/mgrote_rsync/tasks/source.yml | 20 +++++ roles/mgrote_rsync/tasks/user.yml | 19 +++++ roles/mgrote_rsync/templates/overrides.j2 | 6 ++ roles/mgrote_rsync/templates/private_key.j2 | 1 + roles/mgrote_rsync/templates/sanoid.conf.j2 | 25 ++++++ .../templates/sanoid_mail.service.j2 | 8 ++ .../mgrote_rsync/templates/syncoid.service.j2 | 10 +++ roles/mgrote_rsync/templates/syncoid.sh.j2 | 12 +++ roles/mgrote_rsync/templates/syncoid.timer.j2 | 9 ++ .../templates/syncoid_mail.service.j2 | 8 ++ 16 files changed, 466 insertions(+) create mode 100644 roles/mgrote_rsync/README.md create mode 100644 roles/mgrote_rsync/defaults/main.yml create mode 100644 roles/mgrote_rsync/handlers/main.yml create mode 100644 roles/mgrote_rsync/tasks/destination.yml create mode 100644 roles/mgrote_rsync/tasks/main.yml create mode 100644 roles/mgrote_rsync/tasks/snaps.yml create mode 100644 roles/mgrote_rsync/tasks/source.yml create mode 100644 roles/mgrote_rsync/tasks/user.yml create mode 100644 roles/mgrote_rsync/templates/overrides.j2 create mode 100644 roles/mgrote_rsync/templates/private_key.j2 create mode 100644 roles/mgrote_rsync/templates/sanoid.conf.j2 create mode 100644 roles/mgrote_rsync/templates/sanoid_mail.service.j2 create mode 100644 roles/mgrote_rsync/templates/syncoid.service.j2 create mode 100644 roles/mgrote_rsync/templates/syncoid.sh.j2 create mode 100644 roles/mgrote_rsync/templates/syncoid.timer.j2 create mode 100644 roles/mgrote_rsync/templates/syncoid_mail.service.j2 diff --git a/roles/mgrote_rsync/README.md b/roles/mgrote_rsync/README.md new file mode 100644 index 00000000..552ed0f0 --- /dev/null +++ b/roles/mgrote_rsync/README.md @@ -0,0 +1,85 @@ +## mgrote.zfs_sanoid + +### Beschreibung +Installiert und konfiguriert ``sanoid`` + ``syncoid``. + +Es gibt 3 Funktionen: + +1. Snapshots erstellen und entfernen +2. Snapshots senden +3. Snapshots empfangen + +### getestet auf +- ProxMox 7.* +- Ubuntu 20.04 + +### Variablen + Defaults +- see [defaults](./defaults/main.yml) + + +### Beispiel Playbook + +```yaml +--- +- hosts: host1,host2 + roles: + - { role: mgrote_zfs_sanoid, tags: "sanoid" } +``` + +### Beispiel - Snapshots erstellen + + +#### Variablen + +```yaml +--- + sanoid_snaps_enable: true + sanoid_datasets: + - path: 'hdd_data/videos' + template: '31tage' + recursive: 'yes' + snapshots: true + sanoid_templates: + - name: '31tage' + keep_hourly: '24' # Aufheben (Stunde) + keep_daily: '31' # Aufheben (Tage) + keep_monthly: '3' # Aufheben (Monate) + keep_yearly: '0' # Aufheben (Jahre) + frequently: '16' # Aufheben (Minuten) + frequent_period: '15' # Intervall (alle 5 Minuten) + autosnap: 'yes' # Automatisches erstellen von Snapshots + autoprune: 'yes' + +``` + +### Beispiel - Snapshots senden und empfangen + +- Host 1 = Source +- Host 2 = Destination + + + +#### Variablen - Host 1 + +```yaml + sanoid_syncoid_source_host: true + sanoid_syncoid_ssh_pubkey: | + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3U37DGPRPDLlgxZcM0Zj/x6RVZxs7hcWBYfPywujH4+mjbpzJckr2tx3QLfxsCCjQVb4LNSEB0xsOvzDjfDsaPuG4wzqFVyZOtjI4iWg/it4ARndun33r+xSlWc5JKHH9GRK8SBOd4lXv5ylENdhWQ7z5ZF/FtCysb1JHTTYlobgXfTZ4NswJj6BBk669l13uL6zSXq6x6vm1GWiFIcIYqwM5WGSGHFoD2RNn0TJKI9A3AULPloMzWeHG3fJhoVfNY6ZB0kqpTHGoAmJUURkBFki1cJkzx3tyto4VpTzZmUyYg+qqIWbv7Me3YVJCln8JYD10uDb2oPRx6G3C9DlnzRmAVVbqCHzwvOY0H5TLTW7AXCHHgSdHaRym4oTUY9dDS/XFU3rHgexerBbi3sy1Tm0/dEU3cZFm4YOJXY/l4TeTRlhg2VbctsWE1BN1CZcoJRR+qNdJzM7Vl70Y6RGU92Y1rzSpooYVuyCFDrEIp0hAHidb5rs4paCvoxtVqak+LK8dcq0IbWxcxomEimeRG4+Opd3vo+U6subp5jqkOY0uYkFVJXaMHkP5ZIxlCFgif2A3YAPhz9IczRJaaNY3pbVgU7ybOBp+S8KRK8Ysk6OP5ApOTQVTlRhYeNqo7mpuW6139VRY5luekSCy3ehHCI9/MObhu2juF1Nz0HMeMQ== mg@irantu +``` + + +#### Variablen - Host 2 + +```yaml + sanoid_syncoid_timer: '*:*' + sanoid_syncoid_bwlimit: 30m + sanoid_syncoid_datasets_sync: + - source_host: host1.lan + source_dataset: hdd_data_mirror + destination_mount_check: hdd_data/encrypted # Wenn dieses Dataset nicht gemountet ist(z.B. durch Verschlüsselung, dann bricht syncoid ab) + destination_dataset: hdd_data/encrypted/syncoid/zfs1 + skip_parent: false + sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" + sanoid_syncoid_destination_host: true + +``` diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml new file mode 100644 index 00000000..78cf8310 --- /dev/null +++ b/roles/mgrote_rsync/defaults/main.yml @@ -0,0 +1,49 @@ +--- +### when should sanoid be run (every 5 minutes) +sanoid_timer: '*-*-* *:00/5' +### when should syncoid be run +sanoid_syncoid_timer: '*-*-* *:00:00' + +# ### "Default" Datasets +# sanoid_datasets: # dictionary +# - path: 'hdd_data/data' # path to dataset; without leading / +# template: 'fiveminutes' # name +# recursive: 'no' # recursive snapshotting +# snapshots: true # (de)activate; can be used to disable snapshotting of subdatasets if recursive is set +# - path: 'hdd_data/test' +# snapshots: false # deaktiviert sanoid für das dataset +# +# ### Templates +# sanoid_templates: +# - name: 'fiveminutes' +# keep_hourly: '24' # Aufheben (Stunde) +# keep_daily: '31' # Aufheben (Tage) +# keep_monthly: '6' # Aufheben (Monate) +# keep_yearly: '0' # Aufheben (Jahre) +# frequently: '36' # Aufheben (Minuten) +# frequent_period: '5' # Intervall (alle 5 Minuten) +# autosnap: 'yes' # Automatisches erstellen von Snapshots +# autoprune: 'yes' + +### user and group for sanoid +sanoid_user: sanoid +sanoid_user_group: sanoid + +### enable/disable features +## enable snapshotting +# sanoid_snaps_enable: true +## enable sending snaps +# sanoid_syncoid_source_host: true +## enable receiving snaps +# sanoid_syncoid_destination_host: true + +# syncoid +#sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" +#sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" + +### mgrote_sanoid +#sanoid_syncoid_datasets_sync: +# - source_host: pve5.mgrote.net +# source_dataset: hdd_data/tmp +# destination_mount_check: hdd_data/tmp # zielpool +# destination_dataset: backup/pve5/tmp diff --git a/roles/mgrote_rsync/handlers/main.yml b/roles/mgrote_rsync/handlers/main.yml new file mode 100644 index 00000000..ab3f5feb --- /dev/null +++ b/roles/mgrote_rsync/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: systemctl daemon-reload + become: true + ansible.builtin.systemd: + daemon_reload: true diff --git a/roles/mgrote_rsync/tasks/destination.yml b/roles/mgrote_rsync/tasks/destination.yml new file mode 100644 index 00000000..410ae691 --- /dev/null +++ b/roles/mgrote_rsync/tasks/destination.yml @@ -0,0 +1,85 @@ +--- +- name: template ssh private key + become: true + ansible.builtin.template: + src: private_key.j2 + dest: "/etc/sanoid/.ssh/id_sanoid" + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0400" + no_log: true + when: + - sanoid_syncoid_destination_host + +- name: Ensure user is added to sudoers + become: true + community.general.sudoers: + name: "users-sudo-{{ sanoid_user }}" + state: present + user: "{{ sanoid_user }}" + commands: ALL + nopassword: true + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.service + become: true + ansible.builtin.template: + src: "syncoid.service.j2" + dest: /etc/systemd/system/syncoid.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.sh + become: true + ansible.builtin.template: + src: "syncoid.sh.j2" + dest: /usr/bin/syncoid.sh + owner: root + group: root + mode: "0755" + when: + - sanoid_syncoid_destination_host + +- name: template syncoid_mail.service + become: true + ansible.builtin.template: + src: "syncoid_mail.service.j2" + dest: /etc/systemd/system/syncoid_mail.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.timer + become: true + ansible.builtin.template: + src: "syncoid.timer.j2" + dest: "/etc/systemd/system/syncoid.timer" + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: enable syncoid.timer + become: true + ansible.builtin.systemd: + name: "syncoid.timer" + enabled: true + masked: false + state: started + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml new file mode 100644 index 00000000..30e0bbd1 --- /dev/null +++ b/roles/mgrote_rsync/tasks/main.yml @@ -0,0 +1,78 @@ +--- +- name: include user tasks + ansible.builtin.include_tasks: user.yml + +- name: install packages from repo + become: true + ansible.builtin.apt: + name: + - mbuffer + - lzop + - libcapture-tiny-perl + - pv + - libconfig-ini-perl + - sanoid + state: present + +- name: Overwrite syncoid script from package + become: true + ansible.builtin.get_url: + url: https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/syncoid + dest: /usr/bin/syncoid + mode: '0755' + owner: root + group: root + force: true + +- name: create sanoid directories + become: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0700" + with_items: + - "/etc/sanoid" + - "/etc/sanoid/.ssh" + +- name: include snaps tasks + ansible.builtin.include_tasks: snaps.yml + when: + - sanoid_datasets is defined + - sanoid_templates is defined + - sanoid_snaps_enable is defined + - sanoid_snaps_enable + +- name: ensure timers are enabled + become: true + ansible.builtin.systemd: + state: started + name: "{{ item }}" + daemon_reload: true + masked: false + enabled: true + loop: + - sanoid.timer + +- name: ensure services are enabled + become: true + ansible.builtin.systemd: + name: "{{ item }}" + masked: false + enabled: true + loop: + - sanoid.service + - sanoid-prune.service + +- name: include source-host tasks + ansible.builtin.include_tasks: source.yml + when: + - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true + - sanoid_syncoid_ssh_pubkey is defined + +- name: include destination-host tasks + ansible.builtin.include_tasks: destination.yml + when: + - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true + - sanoid_syncoid_ssh_privkey is defined diff --git a/roles/mgrote_rsync/tasks/snaps.yml b/roles/mgrote_rsync/tasks/snaps.yml new file mode 100644 index 00000000..5a6b6aac --- /dev/null +++ b/roles/mgrote_rsync/tasks/snaps.yml @@ -0,0 +1,46 @@ +--- +- name: Generate Sanoid Configuration + become: true + ansible.builtin.template: + src: sanoid.conf.j2 + dest: "/etc/sanoid/sanoid.conf" + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0400" + +- name: template sanoid_mail.service + become: true + ansible.builtin.template: + src: "sanoid_mail.service.j2" + dest: /etc/systemd/system/sanoid_mail.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + +- name: add overrides (sanoid_mail + TZ) + become: true + ansible.builtin.template: + src: "overrides.j2" + mode: "0644" + owner: root + group: root + dest: /lib/systemd/system/sanoid.service.d/override.conf + notify: + - systemctl daemon-reload + +- name: set timer + become: true + ansible.builtin.blockinfile: + create: true + mode: "0644" + owner: root + group: root + path: /lib/systemd/system/sanoid.timer.d/override.conf + block: | + [Timer] + OnCalendar = {{ sanoid_timer }} + when: sanoid_timer is defined + notify: + - systemctl daemon-reload diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml new file mode 100644 index 00000000..e3d605d2 --- /dev/null +++ b/roles/mgrote_rsync/tasks/source.yml @@ -0,0 +1,20 @@ +--- +- name: template ssh public key + become: true + ansible.posix.authorized_key: + user: "{{ sanoid_user }}" + key: "{{ sanoid_syncoid_ssh_pubkey }}" + state: present + when: + - sanoid_syncoid_source_host + +- name: Ensure user is added to sudoers + become: true + community.general.sudoers: + name: "users-sudo-{{ sanoid_user }}" + state: present + user: "{{ sanoid_user }}" + commands: ALL + nopassword: true + when: + - sanoid_syncoid_source_host diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml new file mode 100644 index 00000000..541c63a2 --- /dev/null +++ b/roles/mgrote_rsync/tasks/user.yml @@ -0,0 +1,19 @@ +--- +- name: ensure group exists + become: true + ansible.builtin.group: + name: "{{ sanoid_user_group }}" + state: present + when: + - sanoid_user_group is defined + - sanoid_user is defined + +- name: ensure user exists + become: true + ansible.builtin.user: + name: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + create_home: true + when: + - sanoid_user_group is defined + - sanoid_user is defined diff --git a/roles/mgrote_rsync/templates/overrides.j2 b/roles/mgrote_rsync/templates/overrides.j2 new file mode 100644 index 00000000..e9033464 --- /dev/null +++ b/roles/mgrote_rsync/templates/overrides.j2 @@ -0,0 +1,6 @@ +{{ file_header | default () }} + +[Unit] +OnFailure = sanoid_mail.service +[Service] +Environment=TZ=Europe/Berlin diff --git a/roles/mgrote_rsync/templates/private_key.j2 b/roles/mgrote_rsync/templates/private_key.j2 new file mode 100644 index 00000000..de719dbf --- /dev/null +++ b/roles/mgrote_rsync/templates/private_key.j2 @@ -0,0 +1 @@ +{{ sanoid_syncoid_ssh_privkey }} diff --git a/roles/mgrote_rsync/templates/sanoid.conf.j2 b/roles/mgrote_rsync/templates/sanoid.conf.j2 new file mode 100644 index 00000000..26fa7f80 --- /dev/null +++ b/roles/mgrote_rsync/templates/sanoid.conf.j2 @@ -0,0 +1,25 @@ +{{ file_header | default () }} +## ZFS Section -------------------------------- ## +{% for item in sanoid_datasets if item.snapshots is sameas true %} +[{{ item.path }}] + use_template = {{ item.template }} + recursive = {{ item.recursive }} +## -------------------------------------------- ## +{% endfor %} + +## Template Section --------------------------- ## +{% for item in sanoid_templates %} +[template_{{ item.name }}] + ## Keep-Rules + hourly = {{ item.keep_hourly }} + daily = {{ item.keep_daily }} + monthly = {{ item.keep_monthly }} + yearly = {{ item.keep_yearly }} + frequently = {{ item.frequently }} + ## Interval + frequent_period = {{ item.frequent_period }} + ## Other Options + autosnap = {{ item.autosnap }} + autoprune = {{ item.autoprune }} +## -------------------------------------------- ## +{% endfor %} diff --git a/roles/mgrote_rsync/templates/sanoid_mail.service.j2 b/roles/mgrote_rsync/templates/sanoid_mail.service.j2 new file mode 100644 index 00000000..3c3a9727 --- /dev/null +++ b/roles/mgrote_rsync/templates/sanoid_mail.service.j2 @@ -0,0 +1,8 @@ +{{ file_header | default () }} + +[Unit] +Description=Send a Mail in case of an error in sanoid.service. + +[Service] +Type=oneshot +ExecStart=/bin/bash -c '/bin/systemctl status sanoid.service | mail -aFROM:sanoid@mgrote.net -s "[ERROR] sanoid - %H" {{ my_mail }}' diff --git a/roles/mgrote_rsync/templates/syncoid.service.j2 b/roles/mgrote_rsync/templates/syncoid.service.j2 new file mode 100644 index 00000000..af61c7f5 --- /dev/null +++ b/roles/mgrote_rsync/templates/syncoid.service.j2 @@ -0,0 +1,10 @@ +{{ file_header | default () }} + +[Unit] +Description=Send zfs snapshots with sanoid/syncoid. +OnFailure=syncoid_mail.service +OnSuccess=syncoid_mail.service + +[Service] +Type=simple +ExecStart=/usr/bin/syncoid.sh diff --git a/roles/mgrote_rsync/templates/syncoid.sh.j2 b/roles/mgrote_rsync/templates/syncoid.sh.j2 new file mode 100644 index 00000000..68b2f752 --- /dev/null +++ b/roles/mgrote_rsync/templates/syncoid.sh.j2 @@ -0,0 +1,12 @@ +#!/bin/bash +{{ file_header | default () }} + +# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) +{% for item in sanoid_syncoid_datasets_sync %} +# check if target dataset is mounted +/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} 2>&1 > /dev/null || echo "Pool not mounted!" +# check if source host is reachable +ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! +# syncoid +export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} +{% endfor %} diff --git a/roles/mgrote_rsync/templates/syncoid.timer.j2 b/roles/mgrote_rsync/templates/syncoid.timer.j2 new file mode 100644 index 00000000..16438ec7 --- /dev/null +++ b/roles/mgrote_rsync/templates/syncoid.timer.j2 @@ -0,0 +1,9 @@ +{{ file_header | default () }} +[Unit] +Description=Timer for syncoid. + +[Timer] +OnCalendar={{ sanoid_syncoid_timer }} + +[Install] +WantedBy=timers.target multi-user.target zfs.target diff --git a/roles/mgrote_rsync/templates/syncoid_mail.service.j2 b/roles/mgrote_rsync/templates/syncoid_mail.service.j2 new file mode 100644 index 00000000..caa59b24 --- /dev/null +++ b/roles/mgrote_rsync/templates/syncoid_mail.service.j2 @@ -0,0 +1,8 @@ +{{ file_header | default () }} + +[Unit] +Description=Send a Mail for sanoid service after error or success sanoid.service. + +[Service] +Type=oneshot +ExecStart=/bin/bash -c '/usr/bin/journalctl -u syncoid.service -n 30 | mail -aFROM:syncoid@mgrote.net -s "syncoid - %H" {{ my_mail }}' -- 2.43.0 From 6bcf3cb5391af1977f8559a643daf0a5c511d444 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:18:16 +0100 Subject: [PATCH 003/131] dsfg --- roles/mgrote_rsync/README.md | 85 ------------------- roles/mgrote_rsync/tasks/snaps.yml | 46 ---------- roles/mgrote_rsync/templates/overrides.j2 | 6 -- roles/mgrote_rsync/templates/sanoid.conf.j2 | 25 ------ .../templates/sanoid_mail.service.j2 | 8 -- 5 files changed, 170 deletions(-) delete mode 100644 roles/mgrote_rsync/README.md delete mode 100644 roles/mgrote_rsync/tasks/snaps.yml delete mode 100644 roles/mgrote_rsync/templates/overrides.j2 delete mode 100644 roles/mgrote_rsync/templates/sanoid.conf.j2 delete mode 100644 roles/mgrote_rsync/templates/sanoid_mail.service.j2 diff --git a/roles/mgrote_rsync/README.md b/roles/mgrote_rsync/README.md deleted file mode 100644 index 552ed0f0..00000000 --- a/roles/mgrote_rsync/README.md +++ /dev/null @@ -1,85 +0,0 @@ -## mgrote.zfs_sanoid - -### Beschreibung -Installiert und konfiguriert ``sanoid`` + ``syncoid``. - -Es gibt 3 Funktionen: - -1. Snapshots erstellen und entfernen -2. Snapshots senden -3. Snapshots empfangen - -### getestet auf -- ProxMox 7.* -- Ubuntu 20.04 - -### Variablen + Defaults -- see [defaults](./defaults/main.yml) - - -### Beispiel Playbook - -```yaml ---- -- hosts: host1,host2 - roles: - - { role: mgrote_zfs_sanoid, tags: "sanoid" } -``` - -### Beispiel - Snapshots erstellen - - -#### Variablen - -```yaml ---- - sanoid_snaps_enable: true - sanoid_datasets: - - path: 'hdd_data/videos' - template: '31tage' - recursive: 'yes' - snapshots: true - sanoid_templates: - - name: '31tage' - keep_hourly: '24' # Aufheben (Stunde) - keep_daily: '31' # Aufheben (Tage) - keep_monthly: '3' # Aufheben (Monate) - keep_yearly: '0' # Aufheben (Jahre) - frequently: '16' # Aufheben (Minuten) - frequent_period: '15' # Intervall (alle 5 Minuten) - autosnap: 'yes' # Automatisches erstellen von Snapshots - autoprune: 'yes' - -``` - -### Beispiel - Snapshots senden und empfangen - -- Host 1 = Source -- Host 2 = Destination - - - -#### Variablen - Host 1 - -```yaml - sanoid_syncoid_source_host: true - sanoid_syncoid_ssh_pubkey: | - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3U37DGPRPDLlgxZcM0Zj/x6RVZxs7hcWBYfPywujH4+mjbpzJckr2tx3QLfxsCCjQVb4LNSEB0xsOvzDjfDsaPuG4wzqFVyZOtjI4iWg/it4ARndun33r+xSlWc5JKHH9GRK8SBOd4lXv5ylENdhWQ7z5ZF/FtCysb1JHTTYlobgXfTZ4NswJj6BBk669l13uL6zSXq6x6vm1GWiFIcIYqwM5WGSGHFoD2RNn0TJKI9A3AULPloMzWeHG3fJhoVfNY6ZB0kqpTHGoAmJUURkBFki1cJkzx3tyto4VpTzZmUyYg+qqIWbv7Me3YVJCln8JYD10uDb2oPRx6G3C9DlnzRmAVVbqCHzwvOY0H5TLTW7AXCHHgSdHaRym4oTUY9dDS/XFU3rHgexerBbi3sy1Tm0/dEU3cZFm4YOJXY/l4TeTRlhg2VbctsWE1BN1CZcoJRR+qNdJzM7Vl70Y6RGU92Y1rzSpooYVuyCFDrEIp0hAHidb5rs4paCvoxtVqak+LK8dcq0IbWxcxomEimeRG4+Opd3vo+U6subp5jqkOY0uYkFVJXaMHkP5ZIxlCFgif2A3YAPhz9IczRJaaNY3pbVgU7ybOBp+S8KRK8Ysk6OP5ApOTQVTlRhYeNqo7mpuW6139VRY5luekSCy3ehHCI9/MObhu2juF1Nz0HMeMQ== mg@irantu -``` - - -#### Variablen - Host 2 - -```yaml - sanoid_syncoid_timer: '*:*' - sanoid_syncoid_bwlimit: 30m - sanoid_syncoid_datasets_sync: - - source_host: host1.lan - source_dataset: hdd_data_mirror - destination_mount_check: hdd_data/encrypted # Wenn dieses Dataset nicht gemountet ist(z.B. durch Verschlüsselung, dann bricht syncoid ab) - destination_dataset: hdd_data/encrypted/syncoid/zfs1 - skip_parent: false - sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" - sanoid_syncoid_destination_host: true - -``` diff --git a/roles/mgrote_rsync/tasks/snaps.yml b/roles/mgrote_rsync/tasks/snaps.yml deleted file mode 100644 index 5a6b6aac..00000000 --- a/roles/mgrote_rsync/tasks/snaps.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -- name: Generate Sanoid Configuration - become: true - ansible.builtin.template: - src: sanoid.conf.j2 - dest: "/etc/sanoid/sanoid.conf" - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - mode: "0400" - -- name: template sanoid_mail.service - become: true - ansible.builtin.template: - src: "sanoid_mail.service.j2" - dest: /etc/systemd/system/sanoid_mail.service - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - -- name: add overrides (sanoid_mail + TZ) - become: true - ansible.builtin.template: - src: "overrides.j2" - mode: "0644" - owner: root - group: root - dest: /lib/systemd/system/sanoid.service.d/override.conf - notify: - - systemctl daemon-reload - -- name: set timer - become: true - ansible.builtin.blockinfile: - create: true - mode: "0644" - owner: root - group: root - path: /lib/systemd/system/sanoid.timer.d/override.conf - block: | - [Timer] - OnCalendar = {{ sanoid_timer }} - when: sanoid_timer is defined - notify: - - systemctl daemon-reload diff --git a/roles/mgrote_rsync/templates/overrides.j2 b/roles/mgrote_rsync/templates/overrides.j2 deleted file mode 100644 index e9033464..00000000 --- a/roles/mgrote_rsync/templates/overrides.j2 +++ /dev/null @@ -1,6 +0,0 @@ -{{ file_header | default () }} - -[Unit] -OnFailure = sanoid_mail.service -[Service] -Environment=TZ=Europe/Berlin diff --git a/roles/mgrote_rsync/templates/sanoid.conf.j2 b/roles/mgrote_rsync/templates/sanoid.conf.j2 deleted file mode 100644 index 26fa7f80..00000000 --- a/roles/mgrote_rsync/templates/sanoid.conf.j2 +++ /dev/null @@ -1,25 +0,0 @@ -{{ file_header | default () }} -## ZFS Section -------------------------------- ## -{% for item in sanoid_datasets if item.snapshots is sameas true %} -[{{ item.path }}] - use_template = {{ item.template }} - recursive = {{ item.recursive }} -## -------------------------------------------- ## -{% endfor %} - -## Template Section --------------------------- ## -{% for item in sanoid_templates %} -[template_{{ item.name }}] - ## Keep-Rules - hourly = {{ item.keep_hourly }} - daily = {{ item.keep_daily }} - monthly = {{ item.keep_monthly }} - yearly = {{ item.keep_yearly }} - frequently = {{ item.frequently }} - ## Interval - frequent_period = {{ item.frequent_period }} - ## Other Options - autosnap = {{ item.autosnap }} - autoprune = {{ item.autoprune }} -## -------------------------------------------- ## -{% endfor %} diff --git a/roles/mgrote_rsync/templates/sanoid_mail.service.j2 b/roles/mgrote_rsync/templates/sanoid_mail.service.j2 deleted file mode 100644 index 3c3a9727..00000000 --- a/roles/mgrote_rsync/templates/sanoid_mail.service.j2 +++ /dev/null @@ -1,8 +0,0 @@ -{{ file_header | default () }} - -[Unit] -Description=Send a Mail in case of an error in sanoid.service. - -[Service] -Type=oneshot -ExecStart=/bin/bash -c '/bin/systemctl status sanoid.service | mail -aFROM:sanoid@mgrote.net -s "[ERROR] sanoid - %H" {{ my_mail }}' -- 2.43.0 From 2cb7390f5baa4ab393c7fcc649bb8bbc61683985 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:24:29 +0100 Subject: [PATCH 004/131] sdfgds --- roles/mgrote_rsync/tasks/destination.yml | 74 +----------------- roles/mgrote_rsync/tasks/main.yml | 77 ++----------------- roles/mgrote_rsync/tasks/source.yml | 77 +++++++++++++++---- roles/mgrote_rsync/tasks/user.yml | 11 +++ .../mgrote_rsync/templates/rsync_mirror.sh.j2 | 4 + roles/mgrote_rsync/templates/syncoid.sh.j2 | 12 --- 6 files changed, 86 insertions(+), 169 deletions(-) create mode 100644 roles/mgrote_rsync/templates/rsync_mirror.sh.j2 delete mode 100644 roles/mgrote_rsync/templates/syncoid.sh.j2 diff --git a/roles/mgrote_rsync/tasks/destination.yml b/roles/mgrote_rsync/tasks/destination.yml index 410ae691..8d954da3 100644 --- a/roles/mgrote_rsync/tasks/destination.yml +++ b/roles/mgrote_rsync/tasks/destination.yml @@ -11,75 +11,7 @@ when: - sanoid_syncoid_destination_host -- name: Ensure user is added to sudoers - become: true - community.general.sudoers: - name: "users-sudo-{{ sanoid_user }}" - state: present +- name: template ssh public key + ansible.posix.authorized_key: user: "{{ sanoid_user }}" - commands: ALL - nopassword: true - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.service - become: true - ansible.builtin.template: - src: "syncoid.service.j2" - dest: /etc/systemd/system/syncoid.service - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.sh - become: true - ansible.builtin.template: - src: "syncoid.sh.j2" - dest: /usr/bin/syncoid.sh - owner: root - group: root - mode: "0755" - when: - - sanoid_syncoid_destination_host - -- name: template syncoid_mail.service - become: true - ansible.builtin.template: - src: "syncoid_mail.service.j2" - dest: /etc/systemd/system/syncoid_mail.service - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.timer - become: true - ansible.builtin.template: - src: "syncoid.timer.j2" - dest: "/etc/systemd/system/syncoid.timer" - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: enable syncoid.timer - become: true - ansible.builtin.systemd: - name: "syncoid.timer" - enabled: true - masked: false - state: started - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host + key: "{{ sanoid_syncoid_ssh_pubkey }}" diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index 30e0bbd1..ce8d0170 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -1,78 +1,11 @@ --- -- name: include user tasks +- name: Include user tasks ansible.builtin.include_tasks: user.yml -- name: install packages from repo - become: true - ansible.builtin.apt: - name: - - mbuffer - - lzop - - libcapture-tiny-perl - - pv - - libconfig-ini-perl - - sanoid - state: present - -- name: Overwrite syncoid script from package - become: true - ansible.builtin.get_url: - url: https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/syncoid - dest: /usr/bin/syncoid - mode: '0755' - owner: root - group: root - force: true - -- name: create sanoid directories - become: true - ansible.builtin.file: - path: "{{ item }}" - state: directory - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - mode: "0700" - with_items: - - "/etc/sanoid" - - "/etc/sanoid/.ssh" - -- name: include snaps tasks - ansible.builtin.include_tasks: snaps.yml - when: - - sanoid_datasets is defined - - sanoid_templates is defined - - sanoid_snaps_enable is defined - - sanoid_snaps_enable - -- name: ensure timers are enabled - become: true - ansible.builtin.systemd: - state: started - name: "{{ item }}" - daemon_reload: true - masked: false - enabled: true - loop: - - sanoid.timer - -- name: ensure services are enabled - become: true - ansible.builtin.systemd: - name: "{{ item }}" - masked: false - enabled: true - loop: - - sanoid.service - - sanoid-prune.service - -- name: include source-host tasks +- name: Include source tasks ansible.builtin.include_tasks: source.yml - when: - - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true - - sanoid_syncoid_ssh_pubkey is defined + when: "source" in rsync_host -- name: include destination-host tasks +- name: Include destination tasks ansible.builtin.include_tasks: destination.yml - when: - - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true - - sanoid_syncoid_ssh_privkey is defined + when: "destination" in rsync_host diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index e3d605d2..63ca1161 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -1,20 +1,69 @@ --- -- name: template ssh public key +- name: Ensure packages are present become: true - ansible.posix.authorized_key: - user: "{{ sanoid_user }}" - key: "{{ sanoid_syncoid_ssh_pubkey }}" + ansible.builtin.package: + name: + - rsync state: present - when: - - sanoid_syncoid_source_host -- name: Ensure user is added to sudoers +- name: Ensure needed dirs exist become: true - community.general.sudoers: - name: "users-sudo-{{ sanoid_user }}" - state: present - user: "{{ sanoid_user }}" - commands: ALL - nopassword: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0600" + with_items: + - "/etc/rsync_mirror/" + - "/etc/rsync_mirror/.ssh" + +- name: template syncoid.sh + become: true + ansible.builtin.template: + src: "syncoid.sh.j2" + dest: /usr/bin/syncoid.sh + owner: root + group: root + mode: "0755" when: - - sanoid_syncoid_source_host + - sanoid_syncoid_destination_host + +- name: Ensure services are present + become: true + ansible.builtin.template: + src: "{{ item }}.j2" + dest: "/etc/systemd/system/{{ item }}" + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + loop: + - youtubedl.service + - youtubedl.timer + - youtubedl_mail.service + when: ytdl_active + +- name: Ensure timer unit is enabled + become: true + ansible.builtin.systemd: + name: youtubedl.timer + enabled: true + masked: false + state: started + notify: + - systemctl daemon-reload + when: ytdl_active + +- name: Ensure service units are enabled + become: true + ansible.builtin.systemd: + name: "{{ item }}" + masked: false + enabled: true + loop: + - youtubedl.service + - youtubedl.timer + - youtubedl_mail.service + when: ytdl_active diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index 541c63a2..ad929b2f 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -17,3 +17,14 @@ when: - sanoid_user_group is defined - sanoid_user is defined + +- name: Ensure user is added to sudoers + become: true + community.general.sudoers: + name: "users-sudo-{{ sanoid_user }}" + state: present + user: "{{ sanoid_user }}" + commands: ALL + nopassword: true + when: + - sanoid_syncoid_destination_host diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 new file mode 100644 index 00000000..b6201dd4 --- /dev/null +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -0,0 +1,4 @@ +#!/bin/bash +{{ file_header | default () }} + +rsync befehle.... diff --git a/roles/mgrote_rsync/templates/syncoid.sh.j2 b/roles/mgrote_rsync/templates/syncoid.sh.j2 deleted file mode 100644 index 68b2f752..00000000 --- a/roles/mgrote_rsync/templates/syncoid.sh.j2 +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -{{ file_header | default () }} - -# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) -{% for item in sanoid_syncoid_datasets_sync %} -# check if target dataset is mounted -/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} 2>&1 > /dev/null || echo "Pool not mounted!" -# check if source host is reachable -ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! -# syncoid -export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} -{% endfor %} -- 2.43.0 From b76ff5624ebaf7626751d041c0181b1209f21f7f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:27:43 +0100 Subject: [PATCH 005/131] dsfg --- roles/mgrote_rsync/defaults/main.yml | 49 +++---------------- roles/mgrote_rsync/tasks/destination.yml | 12 ++--- roles/mgrote_rsync/tasks/source.yml | 20 ++++---- roles/mgrote_rsync/tasks/user.yml | 20 ++++---- roles/mgrote_rsync/templates/private_key.j2 | 2 +- .../mgrote_rsync/templates/syncoid.service.j2 | 8 +-- roles/mgrote_rsync/templates/syncoid.timer.j2 | 4 +- .../templates/syncoid_mail.service.j2 | 2 +- 8 files changed, 40 insertions(+), 77 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 78cf8310..5ac90299 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -1,48 +1,11 @@ --- -### when should sanoid be run (every 5 minutes) -sanoid_timer: '*-*-* *:00/5' -### when should syncoid be run -sanoid_syncoid_timer: '*-*-* *:00:00' +### when should rsync_mirror be run (every 5 minutes) +rsync_mirror_timer: '*-*-* *:00/5' +rsync_mirror_user: rsync_mirror +rsync_mirror_user_group: rsync_mirror -# ### "Default" Datasets -# sanoid_datasets: # dictionary -# - path: 'hdd_data/data' # path to dataset; without leading / -# template: 'fiveminutes' # name -# recursive: 'no' # recursive snapshotting -# snapshots: true # (de)activate; can be used to disable snapshotting of subdatasets if recursive is set -# - path: 'hdd_data/test' -# snapshots: false # deaktiviert sanoid für das dataset -# -# ### Templates -# sanoid_templates: -# - name: 'fiveminutes' -# keep_hourly: '24' # Aufheben (Stunde) -# keep_daily: '31' # Aufheben (Tage) -# keep_monthly: '6' # Aufheben (Monate) -# keep_yearly: '0' # Aufheben (Jahre) -# frequently: '36' # Aufheben (Minuten) -# frequent_period: '5' # Intervall (alle 5 Minuten) -# autosnap: 'yes' # Automatisches erstellen von Snapshots -# autoprune: 'yes' - -### user and group for sanoid -sanoid_user: sanoid -sanoid_user_group: sanoid - -### enable/disable features -## enable snapshotting -# sanoid_snaps_enable: true -## enable sending snaps -# sanoid_syncoid_source_host: true -## enable receiving snaps -# sanoid_syncoid_destination_host: true - -# syncoid -#sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" -#sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" - -### mgrote_sanoid -#sanoid_syncoid_datasets_sync: +### mgrote_rsync_mirror +#rsync_mirror_syncoid_datasets_sync: # - source_host: pve5.mgrote.net # source_dataset: hdd_data/tmp # destination_mount_check: hdd_data/tmp # zielpool diff --git a/roles/mgrote_rsync/tasks/destination.yml b/roles/mgrote_rsync/tasks/destination.yml index 8d954da3..9915ead2 100644 --- a/roles/mgrote_rsync/tasks/destination.yml +++ b/roles/mgrote_rsync/tasks/destination.yml @@ -3,15 +3,15 @@ become: true ansible.builtin.template: src: private_key.j2 - dest: "/etc/sanoid/.ssh/id_sanoid" - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" + dest: "/etc/rsync_mirror/.ssh/id_rsync_mirror" + owner: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" mode: "0400" no_log: true when: - - sanoid_syncoid_destination_host + - rsync_mirror_syncoid_destination_host - name: template ssh public key ansible.posix.authorized_key: - user: "{{ sanoid_user }}" - key: "{{ sanoid_syncoid_ssh_pubkey }}" + user: "{{ rsync_mirror_user }}" + key: "{{ rsync_mirror_syncoid_ssh_pubkey }}" diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 63ca1161..a4af28d4 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -11,8 +11,8 @@ ansible.builtin.file: path: "{{ item }}" state: directory - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" + owner: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" mode: "0600" with_items: - "/etc/rsync_mirror/" @@ -27,7 +27,7 @@ group: root mode: "0755" when: - - sanoid_syncoid_destination_host + - rsync_mirror_syncoid_destination_host - name: Ensure services are present become: true @@ -40,15 +40,15 @@ notify: - systemctl daemon-reload loop: - - youtubedl.service - - youtubedl.timer - - youtubedl_mail.service + - rsync_mirror.service + - rsync_mirror.timer + - rsync_mirror_mail.service when: ytdl_active - name: Ensure timer unit is enabled become: true ansible.builtin.systemd: - name: youtubedl.timer + name: rsync_mirror.timer enabled: true masked: false state: started @@ -63,7 +63,7 @@ masked: false enabled: true loop: - - youtubedl.service - - youtubedl.timer - - youtubedl_mail.service + - rsync_mirror.service + - rsync_mirror.timer + - rsync_mirror_mail.service when: ytdl_active diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index ad929b2f..018eac6f 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -2,29 +2,29 @@ - name: ensure group exists become: true ansible.builtin.group: - name: "{{ sanoid_user_group }}" + name: "{{ rsync_mirror_user_group }}" state: present when: - - sanoid_user_group is defined - - sanoid_user is defined + - rsync_mirror_user_group is defined + - rsync_mirror_user is defined - name: ensure user exists become: true ansible.builtin.user: - name: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" + name: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" create_home: true when: - - sanoid_user_group is defined - - sanoid_user is defined + - rsync_mirror_user_group is defined + - rsync_mirror_user is defined - name: Ensure user is added to sudoers become: true community.general.sudoers: - name: "users-sudo-{{ sanoid_user }}" + name: "users-sudo-{{ rsync_mirror_user }}" state: present - user: "{{ sanoid_user }}" + user: "{{ rsync_mirror_user }}" commands: ALL nopassword: true when: - - sanoid_syncoid_destination_host + - rsync_mirror_syncoid_destination_host diff --git a/roles/mgrote_rsync/templates/private_key.j2 b/roles/mgrote_rsync/templates/private_key.j2 index de719dbf..49bf965e 100644 --- a/roles/mgrote_rsync/templates/private_key.j2 +++ b/roles/mgrote_rsync/templates/private_key.j2 @@ -1 +1 @@ -{{ sanoid_syncoid_ssh_privkey }} +{{ rsync_mirror_syncoid_ssh_privkey }} diff --git a/roles/mgrote_rsync/templates/syncoid.service.j2 b/roles/mgrote_rsync/templates/syncoid.service.j2 index af61c7f5..2a493f57 100644 --- a/roles/mgrote_rsync/templates/syncoid.service.j2 +++ b/roles/mgrote_rsync/templates/syncoid.service.j2 @@ -1,10 +1,10 @@ {{ file_header | default () }} [Unit] -Description=Send zfs snapshots with sanoid/syncoid. -OnFailure=syncoid_mail.service -OnSuccess=syncoid_mail.service +Description=Send zfs snapshots with rsync_mirror/rsync_mirror. +OnFailure=rsync_mirror_mail.service +OnSuccess=rsync_mirror_mail.service [Service] Type=simple -ExecStart=/usr/bin/syncoid.sh +ExecStart=/usr/bin/rsync_mirror.sh diff --git a/roles/mgrote_rsync/templates/syncoid.timer.j2 b/roles/mgrote_rsync/templates/syncoid.timer.j2 index 16438ec7..95589e09 100644 --- a/roles/mgrote_rsync/templates/syncoid.timer.j2 +++ b/roles/mgrote_rsync/templates/syncoid.timer.j2 @@ -1,9 +1,9 @@ {{ file_header | default () }} [Unit] -Description=Timer for syncoid. +Description=Timer for rsync_mirror. [Timer] -OnCalendar={{ sanoid_syncoid_timer }} +OnCalendar={{ rsync_mirror_rsync_mirror_timer }} [Install] WantedBy=timers.target multi-user.target zfs.target diff --git a/roles/mgrote_rsync/templates/syncoid_mail.service.j2 b/roles/mgrote_rsync/templates/syncoid_mail.service.j2 index caa59b24..812eadef 100644 --- a/roles/mgrote_rsync/templates/syncoid_mail.service.j2 +++ b/roles/mgrote_rsync/templates/syncoid_mail.service.j2 @@ -1,7 +1,7 @@ {{ file_header | default () }} [Unit] -Description=Send a Mail for sanoid service after error or success sanoid.service. +Description=Send a Mail for rsync_mirror service after error or success rsync_mirror.service. [Service] Type=oneshot -- 2.43.0 From f52aa4384b5af71f04547ddc9c6cfe5fe9353b1f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:32:18 +0100 Subject: [PATCH 006/131] dfg --- roles/mgrote_rsync/defaults/main.yml | 8 ++++++-- roles/mgrote_rsync/tasks/destination.yml | 14 +------------- roles/mgrote_rsync/tasks/source.yml | 23 ++++++++++++++--------- roles/mgrote_rsync/tasks/user.yml | 16 ++++------------ 4 files changed, 25 insertions(+), 36 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 5ac90299..4ddc852b 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -1,8 +1,6 @@ --- ### when should rsync_mirror be run (every 5 minutes) rsync_mirror_timer: '*-*-* *:00/5' -rsync_mirror_user: rsync_mirror -rsync_mirror_user_group: rsync_mirror ### mgrote_rsync_mirror #rsync_mirror_syncoid_datasets_sync: @@ -10,3 +8,9 @@ rsync_mirror_user_group: rsync_mirror # source_dataset: hdd_data/tmp # destination_mount_check: hdd_data/tmp # zielpool # destination_dataset: backup/pve5/tmp + + + +------ +rsync_mirror_user_group: "{{ rsync_mirror_user }}" +rsync_mirror_user: rsync_mirror diff --git a/roles/mgrote_rsync/tasks/destination.yml b/roles/mgrote_rsync/tasks/destination.yml index 9915ead2..9beab14f 100644 --- a/roles/mgrote_rsync/tasks/destination.yml +++ b/roles/mgrote_rsync/tasks/destination.yml @@ -1,17 +1,5 @@ --- -- name: template ssh private key - become: true - ansible.builtin.template: - src: private_key.j2 - dest: "/etc/rsync_mirror/.ssh/id_rsync_mirror" - owner: "{{ rsync_mirror_user }}" - group: "{{ rsync_mirror_user_group }}" - mode: "0400" - no_log: true - when: - - rsync_mirror_syncoid_destination_host - -- name: template ssh public key +- name: Ensure SSH-Public-Key is templated ansible.posix.authorized_key: user: "{{ rsync_mirror_user }}" key: "{{ rsync_mirror_syncoid_ssh_pubkey }}" diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index a4af28d4..d141b0eb 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -18,16 +18,24 @@ - "/etc/rsync_mirror/" - "/etc/rsync_mirror/.ssh" -- name: template syncoid.sh +- name: Ensure SSH-Private-Key is templated become: true ansible.builtin.template: - src: "syncoid.sh.j2" - dest: /usr/bin/syncoid.sh + src: private_key.j2 + dest: "/etc/rsync_mirror/.ssh/id_rsync_mirror" + owner: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" + mode: "0400" + no_log: true + +- name: Ensure rsync_mirror-Script is templated + become: true + ansible.builtin.template: + src: "rsync_mirror.sh.j2" + dest: "/usr/bin/rsync_mirror.sh" owner: root group: root - mode: "0755" - when: - - rsync_mirror_syncoid_destination_host + mode: "0750" - name: Ensure services are present become: true @@ -43,7 +51,6 @@ - rsync_mirror.service - rsync_mirror.timer - rsync_mirror_mail.service - when: ytdl_active - name: Ensure timer unit is enabled become: true @@ -54,7 +61,6 @@ state: started notify: - systemctl daemon-reload - when: ytdl_active - name: Ensure service units are enabled become: true @@ -66,4 +72,3 @@ - rsync_mirror.service - rsync_mirror.timer - rsync_mirror_mail.service - when: ytdl_active diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index 018eac6f..20258f57 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -1,22 +1,16 @@ --- -- name: ensure group exists +- name: Ensure group exists become: true ansible.builtin.group: name: "{{ rsync_mirror_user_group }}" state: present - when: - - rsync_mirror_user_group is defined - - rsync_mirror_user is defined -- name: ensure user exists +- name: Ensure user exists become: true ansible.builtin.user: name: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" - create_home: true - when: - - rsync_mirror_user_group is defined - - rsync_mirror_user is defined + create_home: false - name: Ensure user is added to sudoers become: true @@ -24,7 +18,5 @@ name: "users-sudo-{{ rsync_mirror_user }}" state: present user: "{{ rsync_mirror_user }}" - commands: ALL + commands: ALL # TODO einschränken? nopassword: true - when: - - rsync_mirror_syncoid_destination_host -- 2.43.0 From fec1e099ea4d9e6c3cd746833fbb68efce6cacfe Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:34:25 +0100 Subject: [PATCH 007/131] fdgh --- roles/mgrote_rsync/defaults/main.yml | 5 +++-- .../{syncoid.service.j2 => rsync_mirror.service.j2} | 2 +- .../templates/{syncoid.timer.j2 => rsync_mirror.timer.j2} | 2 +- ...{syncoid_mail.service.j2 => rsync_mirror_mail.service.j2} | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) rename roles/mgrote_rsync/templates/{syncoid.service.j2 => rsync_mirror.service.j2} (72%) rename roles/mgrote_rsync/templates/{syncoid.timer.j2 => rsync_mirror.timer.j2} (74%) rename roles/mgrote_rsync/templates/{syncoid_mail.service.j2 => rsync_mirror_mail.service.j2} (50%) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 4ddc852b..f5150765 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -1,6 +1,5 @@ --- -### when should rsync_mirror be run (every 5 minutes) -rsync_mirror_timer: '*-*-* *:00/5' + ### mgrote_rsync_mirror #rsync_mirror_syncoid_datasets_sync: @@ -14,3 +13,5 @@ rsync_mirror_timer: '*-*-* *:00/5' ------ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror +### when should rsync_mirror be run (every 5 minutes) +rsync_mirror_timer: '*-*-* *:00/5' diff --git a/roles/mgrote_rsync/templates/syncoid.service.j2 b/roles/mgrote_rsync/templates/rsync_mirror.service.j2 similarity index 72% rename from roles/mgrote_rsync/templates/syncoid.service.j2 rename to roles/mgrote_rsync/templates/rsync_mirror.service.j2 index 2a493f57..2970ccd6 100644 --- a/roles/mgrote_rsync/templates/syncoid.service.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.service.j2 @@ -1,7 +1,7 @@ {{ file_header | default () }} [Unit] -Description=Send zfs snapshots with rsync_mirror/rsync_mirror. +Description=Mirror data with rsync. OnFailure=rsync_mirror_mail.service OnSuccess=rsync_mirror_mail.service diff --git a/roles/mgrote_rsync/templates/syncoid.timer.j2 b/roles/mgrote_rsync/templates/rsync_mirror.timer.j2 similarity index 74% rename from roles/mgrote_rsync/templates/syncoid.timer.j2 rename to roles/mgrote_rsync/templates/rsync_mirror.timer.j2 index 95589e09..4b187cbf 100644 --- a/roles/mgrote_rsync/templates/syncoid.timer.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.timer.j2 @@ -3,7 +3,7 @@ Description=Timer for rsync_mirror. [Timer] -OnCalendar={{ rsync_mirror_rsync_mirror_timer }} +OnCalendar={{ rsync_mirror_timer }} [Install] WantedBy=timers.target multi-user.target zfs.target diff --git a/roles/mgrote_rsync/templates/syncoid_mail.service.j2 b/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 similarity index 50% rename from roles/mgrote_rsync/templates/syncoid_mail.service.j2 rename to roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 index 812eadef..1fa41ec5 100644 --- a/roles/mgrote_rsync/templates/syncoid_mail.service.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 @@ -5,4 +5,4 @@ Description=Send a Mail for rsync_mirror service after error or success rsync_mi [Service] Type=oneshot -ExecStart=/bin/bash -c '/usr/bin/journalctl -u syncoid.service -n 30 | mail -aFROM:syncoid@mgrote.net -s "syncoid - %H" {{ my_mail }}' +ExecStart=/bin/bash -c '/usr/bin/journalctl -u rsync_mirror.service -n 30 | mail -aFROM:{{ rsync_mirror_user }}@mgrote.net -s "syncoid - %H" {{ my_mail }}' -- 2.43.0 From 8e0be786b1a324ab309b7cc1f47035fb697c2315 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:35:57 +0100 Subject: [PATCH 008/131] sdfgd --- roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 b/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 index 1fa41ec5..072df75e 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror_mail.service.j2 @@ -5,4 +5,4 @@ Description=Send a Mail for rsync_mirror service after error or success rsync_mi [Service] Type=oneshot -ExecStart=/bin/bash -c '/usr/bin/journalctl -u rsync_mirror.service -n 30 | mail -aFROM:{{ rsync_mirror_user }}@mgrote.net -s "syncoid - %H" {{ my_mail }}' +ExecStart=/bin/bash -c '/usr/bin/journalctl -u rsync_mirror.service -n 30 | mail -aFROM:{{ rsync_mirror_user }}@mgrote.net -s "rsync_mirror - %H" {{ my_mail }}' -- 2.43.0 From f38614a5070c85142e9294644076e5682069fef3 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:52:56 +0100 Subject: [PATCH 009/131] dsfg --- roles/mgrote_rsync/defaults/main.yml | 5 +++++ roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index f5150765..7d5dbd8f 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -13,5 +13,10 @@ ------ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror +rsync_mirror_bw_limit: "2m" # 2 Megabytes ### when should rsync_mirror be run (every 5 minutes) rsync_mirror_timer: '*-*-* *:00/5' + +rsync_mirror_dirs: +- src: /hdd_data/tmp # slashes beachten + dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index b6201dd4..61253d9a 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -1,4 +1,6 @@ #!/bin/bash {{ file_header | default () }} -rsync befehle.... +{% for item in rsync_mirror_dirs %} +rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} +{% endfor %} -- 2.43.0 From a7fcf75aa849dcd6c41e778a36f8900b1cb15d48 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:53:37 +0100 Subject: [PATCH 010/131] dfg --- playbooks/3_service/pve.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/playbooks/3_service/pve.yml b/playbooks/3_service/pve.yml index 1304eed7..f4ad0e36 100644 --- a/playbooks/3_service/pve.yml +++ b/playbooks/3_service/pve.yml @@ -11,8 +11,8 @@ tags: "zfs_scrub" - role: mgrote_zfs_zed tags: "zfs_zed" - - role: mgrote_zfs_sanoid - tags: "sanoid" +# - role: mgrote_zfs_sanoid # todo +# tags: "sanoid" - role: mgrote_smart tags: "smart" - role: mgrote_cv4pve_autosnap @@ -24,3 +24,5 @@ tags: "lxc-profile" - role: mgrote_pbs_pve_integration tags: "pbs" + - role: mgrote_rsync + tags: "rsync" -- 2.43.0 From eb61edfbf67009fa0f7ed5954c9fb13005ff36ad Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:54:26 +0100 Subject: [PATCH 011/131] dsfg --- roles/mgrote_rsync/defaults/main.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 7d5dbd8f..043af232 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -1,16 +1,4 @@ --- - - -### mgrote_rsync_mirror -#rsync_mirror_syncoid_datasets_sync: -# - source_host: pve5.mgrote.net -# source_dataset: hdd_data/tmp -# destination_mount_check: hdd_data/tmp # zielpool -# destination_dataset: backup/pve5/tmp - - - ------- rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "2m" # 2 Megabytes -- 2.43.0 From 53b675f3253bbd5c7140ca28c0b1f46047fe14c3 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:55:52 +0100 Subject: [PATCH 012/131] sdfg --- roles/mgrote_rsync/defaults/main.yml | 2 ++ roles/mgrote_rsync/tasks/main.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 043af232..6c263f18 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -8,3 +8,5 @@ rsync_mirror_timer: '*-*-* *:00/5' rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp + +## todo ssh konfig in datei statt inline? diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index ce8d0170..7ec0230a 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -4,8 +4,8 @@ - name: Include source tasks ansible.builtin.include_tasks: source.yml - when: "source" in rsync_host + when: "'source' in rsync_host" - name: Include destination tasks ansible.builtin.include_tasks: destination.yml - when: "destination" in rsync_host + when: "'destination' in rsync_host " -- 2.43.0 From ae17ae921be7f9023e589bfe81b9064ddeeeb67b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 18:57:35 +0100 Subject: [PATCH 013/131] dsfg --- group_vars/pbs.yml | 3 +++ group_vars/pve.yml | 3 +++ roles/mgrote_rsync/tasks/main.yml | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/group_vars/pbs.yml b/group_vars/pbs.yml index 6520ac76..358c4634 100644 --- a/group_vars/pbs.yml +++ b/group_vars/pbs.yml @@ -1,4 +1,7 @@ --- +### mgrote_rsync +rsync_host_role: destination + ### mgrote_netplan netplan_configure: false diff --git a/group_vars/pve.yml b/group_vars/pve.yml index b2b56dcc..1225340a 100644 --- a/group_vars/pve.yml +++ b/group_vars/pve.yml @@ -1,4 +1,7 @@ --- +### mgrote_rsync +rsync_host_role: source + ### mgrote_netplan netplan_configure: false diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index 7ec0230a..8ee19b0e 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -4,8 +4,8 @@ - name: Include source tasks ansible.builtin.include_tasks: source.yml - when: "'source' in rsync_host" + when: "'source' in rsync_host_role" - name: Include destination tasks ansible.builtin.include_tasks: destination.yml - when: "'destination' in rsync_host " + when: "'destination' in rsync_host_role" -- 2.43.0 From 72397a7eee5a1c80983f7d6c6618b0074c8671b7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:01:39 +0100 Subject: [PATCH 014/131] dfg --- keepass_db.kdbx | Bin 109383 -> 109959 bytes roles/mgrote_rsync/defaults/main.yml | 3 +++ roles/mgrote_rsync/tasks/destination.yml | 2 +- roles/mgrote_rsync/templates/private_key.j2 | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/keepass_db.kdbx b/keepass_db.kdbx index c52b87626a2361fe3dc3e7ea4b56ded3f16b36b0..03112dcffff18fe1ae917fa56b07f28494264484 100644 GIT binary patch literal 109959 zcmV({K+?Yh*`k_f`%AR|00aO65C8xGF~RcYzi~rQzE}kzYW!ON0|Wp70096100bZa z008hwuf|!@Rt9PAgq=AkxseVjwmlGE=G_|`7SPI{92^T>000000YU`;001OaRY^n; z0002V+4GuWibP<)bPWi>icjhV0RR91QV0M50Kg{+00000073x(002`U00021+hl%} z{O(r=(ao|`ow>bGd@!P5+(t7oqdvm9kH9Vf2M_=N0B)g#KvNkD?6dA z=nfZUapd9tudsuOw~YhB_hd6FK6~U2X~HQ2;M<-9d%FvYtj0eq#_N+2bl!xa?bPi^r%>5v*k7}0CUZ$ zTG^O{+j4So_{c(D`h1f;t$9gaY9R0q3j^6$s{Jfe+15A!|bdKsH-d!)N+qT3Q=G4Q{e;BS8n{ zY__R&Bo1c@mNDZiy!go^O}OW)Igrw=#+`?>x8*rgksl=yq{{9@$^wsBrS;R0mIS#_ z&hmbXokVvKurVSa+;PHn!pP@&WxXqdCle`wIt`5V_+o83ZSnKK;UB&)c9v1p`aVu= zjZxL#;AO$l>qmry1GDU(J$B?w099Lt;oj>8061M^zC|DY!uf50AA(XUc4gmD zbtUt2Uc=bjo8e!v@>|VyaHebozlJ9cE{pbkLXt;!n-Cp)&;lwRt(B(G?FkL2SHhY( zZp~-aD-t8QcPTJPurV=GHD;%peAf@Kv?m@wBkm_CVg^Zt=qOeKG4lyr)7y7c$G4UY zL3jQ|QMfDwlyRg80Iq|wHmIsVqX@}_ZB+*;Q)aru5c`SFi(t6V?r6a zzX3sIu#ffnYqVfUO<%z*Oze{VwPFG55_(D8PyOBPDPk`G7c6&KRL~A31OPAsIokc4 zHLr%`sA=I9@ zjdc|>FphP?Vqq=OY31%lpx7WT3Xjjtz18YLli z_8YaMONs$oEbPxobAuN&>k?6K*?NjpGKLGB%KASus&i0*qrf(Q^J@`mWSlx?BrY zkidv~+q!CxMLPC9=zjOn8>#izPk%~t+KMI(Iy4>g*jmAk|0`jkZU^pgZ0WoTfU_?Q zbKX2c1}d61r3v{1EB|?)H`(k`j=q5s`Y$}~sIB_B_g_Ww9WuSp@akQnQ>q>vEHx0X zdFB7aDEHCjP}jM9Ruy2Hp|Ho~apew5?HJoSRBEj3$&Eo2slE2Jq+j~+6orhN6MzzS zTP@W5I#jV=`HL(=d)S_32kK{bk2odY;xXt8JZl`FI0q<3$lu4iiR!PY00Nfw zioB9pd4NXpm{uS>?FOVUI*(^_{#JsHyv9)$M@JphF!>H#)R?^9bv4mHb2KR7GO;vI z8i^PCPiiX1fB2Z}K$pl1-bkcKOOcogkfm3NqR?x&791`%QjG49|B*U_eLVR^6J3tG zrha-v0Yvm^3lT=218#JpfKXE*fixOA^?!HlU&W6}$_0@tk6K8hi@Z;+$-!7!;?mV; zQ7fq?B1c~8SrpMQUlw?r^!A8(YQnSHT?eddZRrgyO+tq}+3ORqE&Zc4o?yrALHWK- zkB<{EItq|cL3HO``nSvNY|2y_vQi43AdYk@df|8r8(o; z>U>Rn(nzI}_0v(_(9h{hpFKCI-sNY>F!ES%X`Cu7!Te-CtC+_g;Dre{T<0ak>V2+= z2Sk$z)Yw%ucGalpBmao_H@Q*l#4v|eGw`n&Tue)vDjtwYkgg`DW}23! zGm4}J#!REDb}9bnXYALy)NNC#=5c~Ia>Kebk|FVlFi2fnMeN1=`~7XQ(klvrMw>fL zaXy+OUqp^kG>jUHCL6D@_~K5G@G0kURcZ7J#2v4I9d_0-E-RtZ2D^#=`E>3>cRAJa zp{ZxZ(OCgrlKjfpwCh{u*_B?~ZzH53X{^E)M724_y~TD<$)eS#I&;D7k%;!i4b!f1Cv05Y75q+>Ap0}PMHQlO~y_&8kXfiixPf$1S z`12|UfibS5}?egUDZ$T?T=XOLU+`Y8R^5#2BTMrhbIY;@wD+-SSpduyc z7UL3D7=`S%;A!v{9zG-Sx8=8q2u)OCcsgNkUce|9UA5eVo#rn7LRHNzk?W2gmdYN)v8Iij^@Z!relF)wucKL0LeQ7WUB! z8!JhJ0WD%-IAO_L3sW(oZ7kW9_@S{-aKd~uxAKpFm{tx&IC8JKZ+r8GXk8R$Q%IYS0)Ms*aJ)t0Z%0KN}LK~ zt0VNdTZ^5nt5QpH)?=@)n7|_^RUHgG__iusR9zG<2>?P{LLh{aYsdK}BJ( z>%h&_b?)^TAAQfiHCM?>bVKGvU}nG?c_S9rwg|k|K3GA$4N`YP^b^gLVvszQ`~4x2 zGCTbAd=Kk{4XzIzWdl&HgrrFJrwI$s5f$0)pUvD;DLHFCn|X^|(x`AV`|9f!ng5)y zAhd`EGW%b^GTjUF1EFpRP7da4OO)u2khCzj(MTDn()itw%_6DoINX^cSjT4MvcLd? zpIMAvWpNw^80(tOGT|o$u+67_k7$KZQp|ld3w#^(d_s;*kj%+$BF%y|6b~YL=&qXY zU`(lsHL39;_#) zZ%=?QblUg%(6I63z-KzhGDmL!W->_O zzEt?JblU@kl_%jg-mvliD_|C znY_hW--B4Ck0$guZgY2^(^u^yoSq)5Nzd6J&)c^Z5px_L$qg0YVbd%a8`n{Kj$#eJ zr^nM&lOs1^cx=kQC7gN_{M)a>il384?B<1PHfi10+cH}z?WN*2iuCkTC+DT`mGM?l zbZ!kCE5fGvKX!s3$GP-~zbg4JKRipUwTeVV*b0p{GW9bpwh)T*nqEV*W`k)S(uGwS z#5FRWFnm1uVr({+4~LNa^#)QaSD>GIt5Z}|n{>a*u#c`=c7@G6A0-$}nk2nq7i~?L zcAo+}5&3gLuLY&~I z41hOB!d>8|MwzlbhknWVy{!I4w6-F9EpOc)6blKfWeA`^D5LwolC<6`<_BxT5GJ+G z=lR%4NKg)o1c}GG;%{4)q)vo@W{{FF_Dz-r0=W);`h}$#$G6(?c=?ler>+9e0?*p@ zK}K@G^yqm53lgGnJc6(a!$M}IissA16LnC8CO7NJ`-N4%lD8WrI6P-m%BJE^Ivc>; z+@BasDGw^Bqsw%GQzmJ+kZiSdzSeBw;j$D)4Ge2VXX$_f=IeNud(vY~amg*}-%#`T zrR^bN&H0%TOiq=SeYhAOK(U?++yr?`ihN@q?2ZkJ=@0yAXFMwuRaggL$RQhRk2{5icCz1YhI3-qE+!2?!TxGt|?4g z;wLGLB;R9t!U;H5Rz}B1}5VDFMSI zj=L^pQTKl8##1h|A9;jJPN=&*qiM&)Vwdd&Sm5sFL&+e~4 zK1RG8-VNDmV<+U|WSTN>c3g%g!lfeiVE|EjX~8Hu;}F|{^lvUrTA5C8;DMc0rgHJT z!VF7lA^G*5`Oel)BhYkxyLSaVG9v(dy|V_bo}K|hnatcE`D*eAK?jO2vl9!sxn5U(4C7&UStON6ZOkg5& zVs9tXLFJuLI*5uScl!vM5_m6)a(Copq$5uG; zj9sDtV1*8#cv~)NGeAspx2_}v*+WO-OPYL&+`n)kwRZ<-{bvce;)xx-VjAR>$F^OB zOl?^))u4LH!|R<3HD@X-PTWea6_NqKN!p6G$1UAnPU@DGI0VC zVj0XRa|dT?tXF&gv(l62v2F)A!bRUBNKTpqsHuWl$kTQie^11EIT9e6O@URnOc}Yw zX7M2}cbQ}iwnp`(c#0j>Z#g87 zljV^`$~!T>gIfI03;QW!X0+S5C1pY*D=U)WT@!Auo~viDh@KKQ4m`nYGOvLf0YD*yRd*=}?itlepz=Fop{)_o$U?;PFT6pTM9-Zfk}A zH}$0H-#<$c&D3>&z$t*mQV?8b6gB{j9kiy9Ab0mM!}Vr&rB6SOmGPX+lH;W35Upp@ zfU`oj(e8#H);V7-Tin3;h=MKr?1T6Yys z>h7j@+m(ZgwfHKhsSaORjqJV<6O{@!|6I0inEOn?SxowQ(5Wr0Y1ufx!f^^gGkmP( z{f?C>GRvW0z=f!0JAYv{aR#dg(|j24XK!2kD09d(WH`N7m4X$LWYbJG+@@ieM=3=R zny-z|9eOLoTUSZMIj_QDDW2%~-^(th1!T5EBEmKNZt3=b=(E%Whce42tDD26sw|kM zZ|r09fo*Aq3-$Q^jBAKukA7=|g+r`v@Z-vBch1|%Qt6>a+{XOj`AUQo{T>TQz(lIe z?X0Q(Fj`})RT(r)2GKMg0ifTz8&$t}N~&fR-BwQKKaCGTBo*a=7b^ttX&sRvl4PRO2MAu{?yofWR|gs7DEXe(z|*h#R6Q0cNiu+d~3lL zcF8ufP1>?dz_zrDsbU^aqgOul@dLsK?Eh zq&>ENPdu#DizY7gln-ivDqN{PEDLg_!%XG8-XzT6%27;=P4cjy4Ypc*i{ zlC4*>C6PkS5qVhJJCoix2^9TZ@kqeq=i#xipt2GI&^2M^zk@i0n=<5`5qI&Zu^dLV zBmvgPtW?Tpl`5}Y4bA#NX$k~{YB8lV>a~&~qLNLA^`#mkgP(b|_<{`axp-Iyd z;wV9qc96dt32Il*P{X~NFR?>5e{9d%Aw)IB7k>S-TwU|uDt~gOS zn<8k#mb*$_p3KLRWeaIcjDX4yq{jtHmVdbjL=|oL&NpVYqovXNz7}@OnB_9BRsc&> zKFkE#E23k`8q)|~w>sJQqn9lkj@^aXj6ua3=R>jXUKbtbl#zD~Et8pIv2^|--$l;J zq$M}WE$(f>hB?j8uY=h${A14dXG$R>ZZ_F$o;34~dK3!`y_2G^ zokp26u&VA|pT02bq$vHd)bvc(Qwru?TQ$E-(03*}oCL0hWG(7llKyF0d(LU6`4+Zm zF4e@au)MAp0D28fq}Ti^li%j^tY9ry!XydeV@&gN=;V!XEM zp7p%e*@7MOsRkMuP(OBvO-0B=?J527GSr$?(xQ=w+N@&OA$=0_v5sdUh8(GQ*p}e) zq>yTB6eh?qU2sJ+e2!ll{dW`TbSSuRz}Wo+@EViVk1y8XnG`}azGN*a2`k%j?M|N* zq4Re8M}ouYKag9lFrbM54F)LAnj0<2Q^hSvan%wNXAz+^0UFsu;xK96Vt|0G&u%(x zc7={TnKO>?D44E}UL+Y$a~7G6A|4up_@)2n6XS3o%?)b-NH#t5CZ5>Osb4_)f^_cJb@vZimSr1ImiGOB)6cWMK zUlBPDvUZS&-tOOTF$NG34KO3v-D!Yj)$|uHrH2@`9YU^KAJcxt!pwTNT-4oj&64qS zLX(+RSTR3+0(G`G-n6ZsZAZHPv{YNbZt^UV{WYLf))r)fQKZU$e_5lm3Hu_>y@i*v zfGPTOi`<fP5PnDbJyq9&4#8nn!i`<MoB>Uu~+$(6-6ZP0iX(uut&x3XZoq1W~ z9di(&VsbyycW*zG$vg@Sd5TTkq~J?P^e66r7Vp9uoW z0GvYKhTMX@tx)ou@GM7B*K&5$UNrwpXSFr=e=rV}SDu{)i{Hc-2n}rxINNg(s z(Kzce2rWR|;Y9DxF53faInjQjF2C|Xh*-j-{neod{{H;^3ThrZ^x>1<-G*@lv?M~c zg(wN%(Wq+LW^=b|$eyr7)>@d?oKP#xkGU6?Rp4)pKp$?@-9;F|WNyMj`wZ;9S-*&0 zi`I8UYYn z?QYSiwVyZy{Sq6IMn_xyJ*7Gk>$bIDOEmZ0t|bx$BD9>;8Ea&lP`8XZkc_>~KES?ET(7Rt(ndhn_Pq?vjnWhCT zwRcgp$1TY^sMV!YEJ#pJ($o<>Hs9hRb-CH^s5yK?|tHYp|Qde#o79mfC z9d_Aqnehe!bzE{)zd+UXN``Y1@^Y@lGwq`G z@96g}6IM`3Sd5Y^#nYmeMl4xNqKo|BPX6+cCx=pge#yahXNfwZm?TOo-U7IjJHu5a z$pU)o&zj$)gfhvsvApX5jgrd1fMG0*H?ROH4w%M zw(xDu?5@iFll&!3zD^~N%E4dheEUPLAqQuQM&Azl1EiwXQLBKbtu?F)<7i1 zxIfNg?Gry!{=R#(@aw9Dc*=$i(lBgWsWn2i*>ejAP1@zcI?G6>jN~#=PeJts*&QVo z->0ZE<R(4BOU7VuOS5ryu!|uIA&E0yyK>7aGmCIs0hIb_h58phSved zk3>_x_E4W3d>`bByZ#z3r$Aj0g0mwQ6Weue|&Cd}>@GSVdsfi;$@i~ZQGC*7Pi2A_R{qbg_^o&53 z%Y^?;A#2onb2|A~S@qg~WA*X2Eee6hdq`$H`F(an!*~*A!cd}eI>23$JZQbi68Z=w zW^OeiIuMA^8h^l|E%=?9r8~ne-%X~eM#gbFEM=$Xvcjdk19~{)xRz^HXXxJPygMkA zrN#BKMhW)&fyPRF$nD_O0l1Dg^tDJRb7V2$&2x$iD^O_Ps@pVB(LxKKroIZ4)(ynf zwl7?l#%KCwN#$v5p)Q}s$Rq15cMZHDB$r${LWF&;9YQbtFF9qe(B$~-;Q{n5tt9J- zz)p|%@qTcj-Artfx0s31G_fV>yAbC6kmTU?x*-j}PH*aQ!-> z6l{Z7lTrLHROnABT^KN%mk>V!bq2-A3+|UgA#xI@p$|UeRpvpR%jmgqXF2!Vrgeiv z{zr*`{zZy4i2maB{-4kNo_KglhlH^=2E2*PgWcvFCjzeM zcfF0rVsbRrPd}SeVzMM`J&|P*)5oJUY)|`yqMg88f9S_(iVAtqaMBWH;Y~$<<1bn{ zePmlSg8ZXmbKf21eb_p?q^h~&T8p%LQVHCK4U8usgxY`rTzy=|GxFS4qE^B{a?%TBUdFufX#j=Kd=Bbq>FCkB8#SRc`cH3Zse zdH}#R1ycGHTW_jkxG_~uhC_Rb!{}FV%vXDlwC_Ut>T>87$L(Ayz{l>gmK^GiNh1R)f8W@y@7KGNK$xPLshGG8zI9F? zo%b9}YVdd2v;#9t9j@rzI1Dq*j9>&=_2am$Rv=7}WUNeSJT+^9&7lPE%#N5W0k(n$A& z&?K{+EOE9Tu3wrBt{XCH8AXUM0px1Iz?qVM7jdz@n*Jx7A-M!zk2)^cUDQQR_cMOi zk;S$DH(uuR`pDRJSA|39H>DnRnzlVa{pZqyCys*_@1XG zXwHDBTQ}cLtrm6I-!`t0er==|->R(~p#q17!=!8ZGwyU04^Z4JtH#7osb;!>p|~y5 zkc?k@6N0c^h4d#nxfa*NT?NxyoeG8b*Ai|hJ?{@K%FK~E#?G;J@Ysbvhl5VZzPFU42l)q@v5 zvQ(v~pOPW;`haq?9s4$eaTc)J&7_T8?kEj1s=eWn3TsbID@Y(41jkt!nKb)YTuz!9 zVZ3THz#N&gAIl4I`R08=)Vly}gp(i+?@h>yr0!oj;$dHlzLw0n;T}>%IYD=YAJ%-2 zrOhYvLkQxNhTzKaFf%6U}3~fZA%Np9$TdX*jQ7G-;K7)1dBz|f=1f18r9?3`u zP5paKT-=B+G7>{%j7A+Wwkx=Na&ZSypdR4Cduj{lb-HTMlO{U2TQPL2`y zbVAZz_yH-LN>+W%X5VFCzI}Wvj+n@ zO37K9mjqT)BuM*%KJf{UsZ=UD&$ZyiFWQj}OqaYUkb2iZ%2f>bXt}qES&@!9m!FSN zak&mLlra*Stmt`!xK`I`=fI^X;7`_vdL>N}Za}EAW=Z1nwHsc}>X@)3mGICHq{6Xd z+C~qc2ZfR+q~ErT#rJX8FZ(y4i|^pq1oYGnIjr4$9(ljo)o?8p@{NuFzJ`7ukT$-v zFpnhluurNAz-4P{UaMf}#hit^$)+^|nPhLC*%gf1X>e9C@YllVAs*Imc-c95o)qkL z1Kz_bNWb28b$}1oIea!?$O9>@t0GGt&h;Jzn0GVTD#@e9?q39Ps$Wluy*WS|0)|nx z=TNBqV=T$mu-EXRYL1*+Ut!ERAZ{r0e)c7p&(XtADDtcofbV||hIFAG*y;$-GT#)y zc25JJeFqHtde5fhat8J!DD%agDn=pA=F-6;zi0OCY?r#RH|?(WqYN@ZME&aOp5pEi z{C*mIP2=XVG}WeitoTF3P}5K~GNFwc%Hwgtk*V0^4_o9uiLEz=Er>F2|E~KIaL;{k zX@1w3^tfSv*_SuraqL%z!HIl2g!F1SCJJEy@whl=r~qVb-%96dwj-Gw&LtMv^pkvu z>^#P{4*)}yDVxo=x7e`C=fJY0MS4+`irAuP8uEA5=1Y~$8gr9+Div&5=32bEo!bJ7*=IvSjy=M{mhYPdL}1Cz-#%mSliXO zm}_zBLxW8ZHo+m?HJIgnpmRxry$RhtW?5Kf8eEwmu|YdrYlcj^&!624gobc=?cPwi zvAT*H{E-UkG#1$PvC+(v}L6v5jwN(5F(ZY{s z;33vx0?WeK#tKd;Sdc29Vhr5nO&SijaD2$H8D{2z9ny0<^R48}Q6qj{_(U7{2JEV~ zn9MQyi4iyXR?x6bF$}PR9|20bxNdPd4FCTZ5C)Fux7DDC%*N&})ePfilc?-3-{)F` zhlM41@O3UK$=nnjWKy*FnTPQg^6vLiB@$V-61r1?Nn_Bn+=ghk#7BwPHV#Rn>&@nF z7RPMG@91N!Xm)uu)tkERHJqKg5mAISFrN4u5^_aHr>4KodHQBS%xEP6?qb6HoxgfR zSDfgA|D$*|uMe`@)O=M-fS>~ce4yvyS7yFL+TKyV839+4=FeB*S$G(Ujowry&DS3H z4)DLaovk4Td`Zoqzsxb+KRXn&eQuNhTbVt=%Ho{8gZwlgq|b~Ub#0RJu5_nFS}R4t zer$T=C^`Ky{lQyGnmI}JGY^74#8(Mm$4`MgV5$eo2>1U>U9U{swmJG0zPVA%g7&Lz zZS(XktF4V4lS~iD$^tY@!RnfX?@OLxdi{1^$t05(L*oK(J(9|_Y@6+P82`nVFLXLP zQridX!&m_$iHpS(Vtl#)aGbP&`6#3OF*=U}D=Llp&!H|)db$K8d&ipSad4$|R8aEt z${XBB#TMITP+pPoSI20LMU36zJgPnZ!m}X8Q)c{dEs#@HjAD1B0_X~kxD)-;jB%WL zLELBc01KQywW~0$-fI=zT}&eLCk{(k|2bK9;|6IBQZv>c1L;djKZhz(<@-O>?wmc# zO0=UBx|PU234=Ujs3#fK{p_W8q)v#^M`>r?1ijhR(N~AntJ@3olzlOnbjt@`1th^+ z7iz;N4VP4vbKIM9eq#5~%0? zMqUP_*-#_&YHQ^5`cM}+v}%VvmygGYKRMp!4~sz_J>lRQ5L1GP_3cU1*OJ>kM7M4x zV)fZ(_n(|mf`<`y8@wgjB`sTQ2&VvQOw;LGrH(Fia> zyWZiv(t1+UGvLKS#)<*nPTWEZEwwNsFL;Dy#UQ3e1B9dkTdIY}zJ{YPjIXi+eAO7rYX%G|hOpU?|)1?*th zs^&F{UhBBfZQ2OpX2F8BEn}&mpZw#vuCv$`zzA_kd~Mr>JzeY0(l1O&=*MX~bG{I> zaX}86Q8~(o3i8RF`5!I`uK<}9wGwD)4;mmKAXGaawKlSKY=S1!X#-X^tLM04)J~g+Gozq(xFgBUMiR+}sm5j`@*cv5M%g1cM}{XRCyRi_dYhx!N{2~sW9U0~ zgOsZSRN<-#0PT&oKX=pR?dRn4yQfqyU`V-GG!QRg4#37xW26XQmOOcCD{ny9&c|4gw!a@K~W5Op4H+%p5T^A_#|3?9-8pSa!yTo zjX1f3*)Hk7PBfQ=-2^>B9RDdn`CL)vV5&9yfe~FWZNiG;asKAdni%0tKlUQ%KrqH5 z0Y=#`6-D7|jg=aMSiIOK-Fjof8djeASlWv$6^rREAE~>)R!e<|iO~`CQ0v$F6zsV_ zm*_xh9%OUMl^U;MIO|C(4ZjEJ2RG`SIp!K!@sC$HvqT|_Xrnl+QJNdDs}czu?3sfx z4wBEp3txgqQ!w<5F-~d4gCu8~&Jiwc=1-4f`berjl#i-;)V!VyeH}aAW0MpD1`Gui zY-IOAh$97^_J;bBjuY-Fw}qTpYQ)!ajv4{_2jx+7vgag9t4WM8H1}e2urc1Dqr;zo zVkoH^raRs1;2bIw87ioa%C1+UpW+a8?L@7i$w8B)et42alMpnBPo zSVlMPujWKxy6Gp-ToEpUT#R?)&`8-lc2W^4@+#|W*-8Js&ElFc* zumufE-9A@9qEUJK@v&kO4IIaPWSa7mZI2y(D{0;7dj`*ssL!otw~UDt=(J5 z=;-!=GYi??Vu(4nj<{nB+7=#^yr(QyGIvCYozW&gwxAK zI+uMAv4et&-e=p;Lf=&WX((Y5AN$G33qC<1J`QNoD;%kWw5A5(Kb9`_kC6>-`BP;R ziK|@JkKkhY1_|}l$b=%d9^KB_YYS#PO;_lHMM0@5HBBl8+jFmw9#8zL-xX;5%U4MD z`z2l)bEeHtT@mfX`){jzwCZ#!d1vkPCNeWS3Kl#9!J6Ek^&G1a^S$k%lzEb>T@f-F znT#qW-Dz+`bOJvag!BTKm8c^R=ur^UFG8*ejc%29H1i=X=6H3H5mH4q>FiB&`O?QJ z%7v2Gy~wg8BvgZRC^BSowH=jnzs*Esltg5aot^Xu!DTD>xH?ff*MS>L70koYDMu-(AiL-pQhINTiC49!gZTC#>n}O4x(0=rzvAUqra; z>qWyH5g}#@Xj=bd+;-d(3ZJZ>YBNAYyjrjih(Ij3wKTsypgruW`xa6cW zCMminwEexb29J;v!)j_Ijp#1cd7#og3vq_%7iCBhb66D|#t`g@(d(*6GQQ@HwDoMIvIW3Vt2 zRBNS|VuwRM=iBQ&!LIh1uawQHkz*bwKs^N4+UIzQ`@P_I7O7FYiF(U`Ia5I(Fq~k5CGSX(Qsg%0^*)CjH^Db|4KLX!Gr{RJCVR87 z0n7sKsO7mfOsOa{s^ie2Tf}8QJp+cDyPjHkw7@u@6jz?mH$5t6Teli3xq)~jwo0^- z!GZlkbhusTozPBpHr?v|L`d~;UXw?_0i_wy;D=-W1iP;=)gyY>(sk+yydj+<)}W+d=wU;q-AUhUX};zWolH{M-WN}y^Mh0MAU^+XSg(;B!?FR~-z{ycqjizp8g7ww zt1kVEZIJA}-9^um{&K+v(UjT|6BaIV=IEA)%80~pixelFzo?GMq+$z9{FJ4P9D6&P z?+zRo^=E0W=HRNh0<~pm5+vKEhw=T=Le@qU+Q@kV9!AyUGS+TIX@^<@{S_#x8HG#m z64gXOnX%7XGP2deeAXX*eA`JJ4w^7huhz={ASz}+m}2FGVy56ye)c5hs0|3XPgZmS z{f+hfVSB&UoMwIU>xQPUTSO|;g?Jk)A2R;;|KL|X(zB&r@U+IB2gmswI6Q_cdk^7> zvb6X+)S|}}4N5E%^F^#?YZUg;l9 z+Uu|zR6=43_#t`23s|j1ytLCV;2cF}(>S&6NR$^@tKmFXKPHnSBUC?y^%YpI?cM5; zMj<9WCDl~0J0Htvi32>%hKUEv?j}e++wAXaQOc4!T2KCFyw~~2zcDZBj`4@*g@z#{ z5x&yGASWry+?Rf0$aqzleno|k>+|#hI&p!w^!IrChgbYARL!_%C;i{t`fr_nT$S-b zP^}d*1`k!?#Z3^Kr~;j`O(rpB2er5n(O3EB?`U=lBaR@lw-7`e)lSaAoE=0SIik}VjK08|*T77wuu16xLtp1?0e;|^y8hLsK?s#=5V zkVVOGgH24=vXClpb^eO1e;yIWY&c@%pF%F77Lfg{Im_J+fBjkDM(OP?$ur^aLJYO% zKMvgq{zEWK6%8-ROu9RKKDWg!>k@2EhFU>liFG)mJEEtsMo_lgD7}|Xp85EUvwYO7 zF?N03SdM=}F%NgQD*XL$FNzJD(Ol6Us9VPb%gNm8LPyJ(emXVO3SfN|=!VI^m6(UL z0edC;*}^T!!qY{2O#ns+skpD7tOY@HijsIgnJ(2E_;1?8CaoKsZ(TuHwHNbC{n#vp zx)hSFRAN8u_-&{F_qg79!$vD^8Sx4YIkcb%`d6b&#-~2e^E5P_CPR+Yd6QQm@4q{S z1Kd){g-fBfm$PXpjQk|zt?u>YuBD&I) zSfacSi}ckRN=Qj!91;3@Bx%%s0@18*&(z@yd}5v*}`*t z93q}e{D0hqiU(sWS$66MjJdji=X1YU;zV{lBQ3CUQt5B_Er{Dm3HnNg-Xsab1*7`8#jGeUQl)GP-nvNwc zsV!qPE@12Bs^f_K!)dh>5EDD^{B+SBi5^z-0@`tEiym8S@DPmeU+2|ZJQITiG}2tEc&U$RwEq9 zN-JlnSPM|%;1Hu|gEiH(K&_vo=v()<&WqujrdJq^H(Sro!(;G98MgYmqU{hH2-3Yv zge%MFf;VIbd66zOR)AD6`S6?Omk|$szr)m;`i+=O*7*NTuKF zv+!Dfj9oxD8225&ko?WBGv!5E?{mJc5B5RKT#+4S_J8Chuxb&VWXlo`YT2Ff%lV;3 zN1h*GHsFLGzSW`nK-ui!@Dcxjfs|U57Wl(dp(p4Nil<-3T(cv+O0FwQW5xpSi8fzg z3Ri)=v&uq!aim~F@5^3!_(@-Axv*Q|q2ldx{n#04IYegzBDsFnm6}(q7|hR3Vo@_@ z2fn5})jsDK;w$m}F~b0?-7&;5jG4eAh#c@_y(>esN>6mm8mQ_FQr%ldsHVrRWdF|# z0TxZof(XyG6Uk>OfXxriCpXhMhI^d!*G8Q%WeyPwW-N5s&R9`(er7U*++}%%G+MG| zAvEd%#>jprqLKnjx{+OecAeU{X+#(Svr0<^!2e>Y-*@mp^1R?*`mTA9FBwS36g4Dx zoULjicR}LrdFGrSeZ?jDLliBjb@~GzpR^lmx5LX4`7a-3x1{WyEixAYQvIMtVu@uS zXtb}t#4|}+Fn%^y0Mq0ZsBkfy*^cM0hqF$zV4OC+7a47l7N48D*2F77xu#9M^@_ST z7cL{04oShn8dwQah6DrsTJ=+*T8nl&?r;Z)B@Gcy>QMo3Z>6&k1nvtBu*=8bQ~o-F zS*SlP`Al}q5lC9>wm9~PsuFPnsSy-(d|6&(GqAUa@rE4NRECh{`A6k)-dI2vPh@KdUY zhwwC=04zY$zhXm)f0eVe>6srLO?LSQ;M?w;K&og|)JA;(Pd`^rTJnlQM30UPCLS6{@-yU94aj3v~ zQ4Ad#Nu9w9E4Y7B4*D!{HJ?o5i@bU>^9tnj+p`afvM+*uRT1O;Q{!rnzJdh#s5p53 z2gHSnxJo@=*}1R)u^9axO>tu%x>(#RBJn^3J#8VuLDRl&&Y%Z|#W&ou$Wa4{SRCr! zW=e=OJsUA}nKf1t(cYSM$`x@gx=toOjN!m$e?0=_-PPKLr}i>VhNMQe!U)ob|BLVq z{mp@PnzLsYt%fs1rmVv`9LR46{th_!>Mk>Z5e}$Z5zn8mbDYMnCb2$~$hon`yVcZM zY*d}`Aj74|T1g)HD~N8ir?v+2>z9oL%+dj+MH?r0XYICIjsTJI1-wMyobRwm8jA0V zx&lUh*Fx6=DU%=a13H$Fo|)fPuiDMB9&3(E{!&g;m!rx0ERo=dLiEoUld8+!B^Eh% zMf2LsTZ~MB5hY{UL?#9m6aK}xJ)!XZt;tkq?B6?lX%rv!436F0aLQw6G;5aG8nhQs zhgLRR;^PAX2k~8ZXbImM?0;OJWvmi=ZsTT=NS8gqhu>eAC9_zyP;9m!NR%q76b^HV z0_0&oIM^A58IM={!N#9b3a5&h;rd&qg3y8}S>T;iA$rJppYWcL9x zS#npaUvn57m{*;!axOd?`}D^=(L8V0RnK9Kw$+w=)>O!#c2xV7GP>c#nL36_|w_1_O0_=P3dthc8~N;wAFtw@gK>1TlL9AH`AML*JIz*3YDubS3Oy-A0M z4wD(I&5elIydPEJz7{Z^u}8AYvAEIW+SQETQB2Gwn1+@aSVy|$w6 za1I*3soPU772lZ5Y@reMyLa^lUUC!R*7e9^QdngLHNJPZ!oIOP3Ef=j9u zAU^Hr6(h#-CS!gU?42}iv8K%r-K1o6Km!n&&g>J14ND~u*XkJ`ziJ?Z8Z(DlP{Xep z(PCzB%V*ai4KBo8QJ+ctH8A?5PJ4KnD~y!g79KK9*ECRKrUhpntkiFf!owO|2s&4i z1MhXI!&og)75Le|3Wh*K@?G#Zg`sm1HKa!Xc1qhWM73s&wwBT7gAQS&rtqYW-Z{y1ikDTj@2Xp<_qM+| zLnB3?<%*Nms$!#?B_YUry_gY8Kkd-3pj-drY?RzCe)(j>=C*2*_kT(3usDBjAzM|) zO5)$J4!isKqCcWOpp!mquJ2nKJ((3WD6Z#J9j7lN5gI4`W4^7gS!?XLCs#x+v`w4P zIDlBG7*#i-N%M&6{G=F5pMl;mR*_IVR;)DycvZxDn!#EyzQ!)tY-6c6Kv(xRqt zb&{Mi_a}#95$D&|O@JmJxthJn*Q2d^!+lckt8)7{tESpxgqHL4om_-g$RjC?!)qRiM;%;^Ck)fa$Njb#t63U`K?43MC#&^35sRr^18~sDeRQ(BXtC;`_>mgp5UO1 zLCvxj%%!FRCpb%mHiH zZG4PwWC?mK?y$t`jd)T~d6g>On5s3U8{PuD_5gWtW0|dzC<0|vVAhPyj7Nj%C^0=| zQr;fK-TqPo>o&FvH*_L54C~py0g^ENEQ02<+XJDuaHTF5z_s79amGZ12fPS=iHUV6U5>%Ga8D9G75c3ddsj9p!7e?q;5F+)07FQg zw(&C0h_$YXpHfGr)}HM_cx&Dw3xq;&AJ;epuk)4PaZ(K=^R6jwjgY+_o$rq%2Ahz+ z>Ya5wj`NDR4!A^NqopJQUYzJQrzFH)J-p5R0){_i#mcx(6{P7$c`1=Pns0+q?V|6{ z2WPYNXPInCpk3H|OVt!Ye%FkkOqkbIYA zwNDIS-&!;G96FWSBWdSU(gS5f?27Bx2Kk&f8oq__^^1$FCbQsZUZgHCKY|>)BCVC# zV^I>i#z}lDV#m71=&g!L8FwO7%vW@0nPIz5Iv^_*M8r2{AxvgsgdZYW#zlIc0}3K# z^GQgGOXjmV9LU`LP8n0DHoZ-8bJ2&-mL)`90Tb<_M&PgKz3C(@Y9OT2F{KD5H_GBXRawkpZ(1T{bMY6#(Y~3XI}_-WiGZ^aNCNooandvcZ*8Nk zy!mJlo8T8#IK;B>Fy)==!M)Vp zShztWp7t^P8;~3|3&V+_qm`bdf#$7J+yK$Cj+Ww#WUTf^S7Sy@&MM`x02s z#|m${GxpqP6rg;z#LYpDphf;N4cY&4xhc8`c$iC7ts>NnkmJlYC)M+QU=@MgU29e} zM+r9wfMusEqY4+>WL3BGPjDCxM7M1dSDd6!G>@WSCx*P_FNqna1#CFwH!ci>HlmqS z9iU&L?!xjinsN(U-zLXNGmlHWYpQyhei)ssP(XTkNNHRNIhK^Y*r}gWj25Wb$;$}q ze?rFZL{AWFxI#>W`m@D8cn(jrQ7ld|s-zFx8MCV`7)N2q+Qywg10DUlym8O2aXlXj672xJIvt+Z?riR0P7> zpc|VgB=7ww610i!fyGZ*HuGD{NV@lHw}57llGFD)#v#@qfhV)W%c??$#yrZQnq6lx zh~*f|tx4Z~Oh9$~G$s~Pt@HKeSml=VjVRhrjD8-(d)r{PP8ve*qP719AU_^TkbR26 zkFjV|5fTvak5)F4DX4AV!Sn6yq>i0z7#LiGvwK;DS_ywvKHKBdc?q(IPabHUNu*5{ zy1CbOd?Y}0V=fV`(`&_G=$0-wCgqC*z8A^^n$CK{zW4udGwt_VF4q>F+u8+^e@n?GfSYBqb} zUmaW|2c};Rfyvt4n%P0B`Mr8|c7j;LzIUHPF9;ZkK z8|{+(d2z3M&?%$s*05b#KX-fF8 zsXAUE@eS%{{-POQM6^{vxQibwhf#KskkH?xdlWrad0VeMl#wW~<&2H|h&Sz@To?Y< zzaK6S5;<<=>36dM98gTF-&#{z^00Yf%-EJ@vrrQJ^c9qUOiIK`{@1r)UcTF#hf&yp zc%Yin;?CEptq}O;s>|+7o$lJ`H2`Bi9@3A(Ujidr}rY6s+ zVwSTYlk?z4$j@|d=-Jya)Y94dUb7m{36n%6VGnt30ome}qZg^E+m@>P@8*zEP*>V; zs9$A>Y!mueN@$4S76k8z+;+M*Ka9N|qvF^lCBXbcFzZ}hUQe!$^%rgrd;OG|)a-O3 z)hj}?z-q7E#?i@qme0agZ1LSReyt{Y(iCW|rJ%s8kw)`ZXQEtLP^e(w9Cm!Z5Y(e| z6VTPS(lh|S*BEb$IC?lL>0}usRLD{#Vx|aa(~w^np6HZ@5kO2t)4FT+@}14^#U|5o zU4Dbjr3q>v8W>vH9TKJF=~lOpsF-%a5zxUa5$(;la!|<^vhQY~;L(Z)1HCCFF1g$yLbZAOfgHIofc8sq^c{ct@QE-c-HGwTw z2L;zL_+n$0eH(N>A z!oR&8{l});9|gL*Lr!r0W!ldajV^?)T!_s$&~?%8eO-5_rYX_zpB1}GlCmzuMLEV^ z&cSI~UH>QV-{`?${=RNBG+L$*&Vv-CY77HGvlRiKl&@6FXJK#5L7I9}v!&A(wdmXW$NE7=sHMJW!x zB2CUcV=<~HOLm7%gKHLpe%1+-lqusH?7Uk{NC)B7=NaQP~u18 zseB1WW(W`v^XINa3BKMw4~(bo!QQ_^%(X0Kjq&)SN(!(3NADmWWG6p>c0 z74~A~vH|p#9NxNBEj%|2s!h9=IX1vF&8vai9+~(DUtS8ob+v81-vxk&BU%m@z0yi1 z-^c=xKy};0*ljbHhS{#cfJ{4k%9;(=yCR@P0EbtJ+ONdFihumA)K6&A`;#hmRz6qG zCnn>LQ+;1r74UG;i;8M=hd`PP{4Z`vqS_mOk%&p=CKgUomY&vpy5~7}R=fu0#N~-= zBLn*#h)SqH>3-y-AMS?#NW10x;=#we8XoZ3o|z*31djy6WL!s+ zIdHv#5+T)^Et>*T;QB+kOT;Ann&v5+bq~<>et6DuQ5(JtGi1#`X$L)fxCunKgwP5} zYJ2T11k}~uIxDu82`-*@y$j_8^U=6b3*d>QU5_Ssa`($Kmf``t$rQx?P1OuUSu>hJ zS{N}t95W5>vz_|L@to%*qzZhXs24p`iayrK5ToRwi5(Xc-7Jt5R3g5kQhS%#Z?$V4 zZ<9Vp#l|sfg8zwni4?@0cL_!rP1A_iQyj8as}9V=r`t;6wvw9xI|FZmq*LbM%Y)>J6@ZowNX!x&a_IiAzuhx{07fE|`9J|ZPQs=Ra zi|mS1z=9p#+ZWPZFNiFImUaWP^iaOG&RxR2BwXWE2FoIOWUMRRtZa04Ydg%Dmw2`q z$b_Pnh~C#$+~$ywMqeGFbYYDp#Fb%zqDP4eJ;NUVY4ciYr}mxit?{Q|rZ(iwIa3Of z+jJ8~tSk&ie1ZM$A*!E;&9-e+S1Mvx1@AX5@N!C2RK+;aQMPbV8(&y1-esD&~Zr#n2UY;klubm1tSu0y? zpgu?brZA$GXbTD7$86A>be&}9ptoGfzu`baA2`tIlVq@^{p`6L$==KUhNR) z$@UkKrgEi&zvu*qW4v);+{6P$UsCNIId<@VkBiY%dquz5=eG|#QqPo!kVDv#VD`K7;)=Xg;&Z>iH0&Mxff{`(1%NPgl4`@RdtdqulKg?O z=wy_iokHZfb?=QQ+t+%G?@kgDZ?m?E!!7&w5#U*86C}W@aQ?DVT-n#O3uVp99E`!! zIXoE(aAF42x9D?0W4Kb$facmsBD&>+l(kQPwRzH=IL43Ja6gIRz@YR4bF18f=rl*= zorT=o#h3LjX6yHr~@k9|WYWN;jqPf%*EWk^t^zt9H5ml2%kBfsz*?Mi}b0ZFErZk=(bn zYS@{sIq`cn@UzCdd&lFOUd7{wKyn2ZO59^ga8`98Pjre5d02P5R{G$vo+5*#ohzT( z$&XkvWHve_Qte;DEq1r}v*C{Z7V3fm4lrYvGf8o z)0WYWZ-uPL4*hdZ{{g~vn*pb3RZGx8*2A>SQoum$%J260Xu|oMz8KZuYV|Ow(nKii z+)Cg-rV+Dc8QBByqUvSlaJXwn>A^`#j)`kj7;7AqiE+jmFqCoNuMnJ> zrU5*=WyhjlDtP!GHiK>Mg5|Y1(4Gi|f?u0|)R|xsH0$w>Cb=;wv6C3Sm~Lb=+?1xNqwg@vJn-n*;($k|pcicj0>9 zz;nuwmyF|wu%MX7*YKFFEm=I%Gt4FeUKdrpO7Dh@EzjiZ4fQtjZ< z-~CnwPnA*vES+IYF(^;4ylZGh*VzgP;%;pJF)ouPj4rVxU8mVs*02jG&T(Q| zLjFk9Tmr6yT1i>3d*U)arPYCK_~8C*d8DDzmROw0H)0{2)_w2L<}6-;B_ATvtrNDM z+&b-5gy{rO%)=bWII0cl{G;nvl}vKTJ2wLG!tECrjeUFv?5r$BU8uk6JKi%XLB&^r z1*iy2#9ep#e3>WpveIzkW+{2i6{7*V-*#n?yaB3?cEv=U3++XZQ^m=oL(MEs4(Owb zB!bhV7UEu+8`*8B!^C>TstE8IT0eJ1JB-Nx59!^DG!s@nX15?y`6~U_3Ekq1#*s9* zN{T9Yyre!V2@ZthqgDSwSZRwXcH%()H)oCvIm@wdo1-_wO~?+*aArOJo2(ysiX8&R z@LRLUblH*n6=rVBwt{{^Dc14cA)RjoTXXp~@O_jp=AtDXh9V6LWJmAH?2(>bHf=d# z$~lKrW`W@~L*5_P2*!nrn9Fq3JBtA}ZwWVIJ`*`gRqhv@LD_k?=49D1Oh0Q%uN}+7 z$KaN<$T73ypF^FstO>3{k&13U*ykDA>g=e>s5_4CO%lN8IN0hlqe1C8E#;@7v%KlB zpc!tp`8DuQ1#ltOYxx#^KwGb19skS3PnG!RLn0{-b8-9ktN`{T=cSt87E$Sx^xEB@ z4z?tiOKN_or6|ff$SlvFFG~J4Dj12`nmD#RFMFGo`1Ke7SEJ&lBVF>Ca~%3zvkp4O zkcCE$5maLiNMO`gxej*S9NpQv!_^ti6>Tl=bWapV3< z5$%o&E1oUYJUyxrC6iVLG`8lP5VYIG-505Ept;9VNLMdGE+#>|#4t46+sX!vC^r8x z1c&|QlHn_ugDm&i$E>r{^PWiECD%|3s9uCv=7^ehJ8)8vpQctO`F>wJy+MvStQABg z?M_9L&S6cBct8d*k$81xZ zb01Le0c z`sNysDCrWVT=;gSuXtj+dwY9=r`Fji}{VoI`iNjj-g;R_Bn!Ai#o4} z7CGsjsVQhb?`1g?xhjRcecYK7du;CV$16m}#Pw&o711WOQ7t1$lGJDR;VPf4k21!` zPbhXG;!pH`SWT_Y-agkLO5&6IX{xE|vvhZAIQ+nRI#TR%22=3MPrZK5(u^HlvsHV})@vyi+DDOHG3V40BFp-+*3l@i zaC7r{@Uu)GYWCcvfg6lifY4M{ml}!#_mF#^Y>OA%q6}W-nO(@_aEg`31AlZ8T7lKk zIhXsSG3ibcI2tY z#8kf(U(^%7ra@J?irdvIO&DcfAu#i%$Tm!nMe5HcMt0-dP2=`PN5e)LlMso9rh@dr zEhKD`<)wTC3Ag~f^rVIy%#>Ql5W?^+H*IE4=73rid^!sWb=68R+c?p9NllBi|jBlYk3anMugcxDNFX~D%(TO{^ZJ~(9`zDih; z7Ho2^<>+)n{O$uS4UYB-qS_!IFAEi_U{u`jOEU?edY)5>XP+FCTrqLL%lehquax)n zwBR)_H(F3sU{K6fo{IV!IMAU?+BA&`_!Ckl=9Tb!%2z?iCHxU`BXvLJrLYpr;!V=3HvZ7sKl zXXr^8PcUjb^QG4xq&xFbbG2h5k=^)5aA9ubB3eyt?HZv_m)ViVF>hX}jm->QkKcH` ztZE188(cAq#(tUC(NDUdzNEIkEREeqesZOTRQ#+$&pzo6P$#JnakTCc3aTuy1d9GY zO|Rq5^?^uw-aM(EkN~Q-2yf@<;jsZ!hr-^~o7TTtm!TXSz66(I_#!99|p;O{d^Dgn9Smooi$UlSe!Rp9Q#-s%B!M*$LPs~Hd015Cu=UW;X~yjGXS<(YiGl8l7p zE+yrGw03~7@%YKM-sja9BdFU!aN&s8!tND2E=JSmyB20bG<+V2@kq6{xptLk`25-% zSO>0$PI%0p8~y`rsbd$mIDOv_ykqQJ=y~t>Pl`7vHG*ItG=5FgMgQkT;Z#(C-#5D& z;FJ*&E3^po0`UlEc0$BCUnT%t?>B(B^Tu#pbrfLaH?JywD(r5WT!;}=!}Y_OE`Ufg zAB`$WHGW9CRGb(}RfQ^GPXgq^j37bOWau^f2Z_(2M9Fim*!5MI1{M8a9`%n2zv=R- zmls{*Z5%*QG_+z4V63L^jsT5x4wp&Pq{R~7EOa2{J`K-3->nTg^ z2K%s{(a-bpM;cX-M|;#Y7nt_d<1_klr=}8k%Vnb#x5_RSt&WS*nv3~BQ9!&<(pqHv zC@PXDzyLz1a3{Ee6TUxzPthCbrH3w*@M5@j)J{nKEktQcuan7PMt7P9oeSPL%G@4a zd7KUDCnqGG2vIzs_=@hk#;xDd{f*VE&EUf0?OMcIpVQVPuNPUpVU;`z4;a%F`x(bQ z2r2=ab>b%W7yZ#!5)TgYaJrtD zmrn8~!Z=2#K3h){EcsD|(yR}t7}Zg6 z|A^6^@REeYB%S-)sP3YLmU5MEo5uT)!Bsz|`{p0D%E)hn-^7*>lPNK0mndnBVl zk0!v{G%K}~XXoKuLF|<Ww1|o!q%fXYv>+)6Uo}gV#}Q;SsC)$<*TD#?RNmDh0z(>Y*?c% z831Nzysu{SvFq1tm(y#r93`i{3Y5_6nR+`187>W<(6uj1=sK;-Rqq~}Nuzr6Y-b)k zST@}qY#VG0a_*TBpHK7ru)T+sjr1ZyWlt>`=?nl%cBBkSg%t$;ZhaL^`!r8rkk1RB zky7*~sJa?7`RDL=>m`yobu=Z#9v^dz6rK!`{ko%n3J+`Op5_oNZryidN#6Z?kR1^s zJ}^&4@XLJsGP%M()c>Le0Ng9GvG^Mh)u&w5ob)d7l~YvACAJ~Zegszhb+0n#8ed(r zqB1VIhyl?+*^%EG{)N~6Z|`|uA5*V0LeItXjvVYj6>4$H>5h6l5zFcU?)QLA^9bU} z770(}i1Cbj49yrg&ZaZ!n*%wFgcg5h>SOa|4^Dg5fFW)wwb-US|AE%<2p=)f>=&$| z{F;&QPPxx`c?W^Im)b5lOWgN;lX9Zf3w{*!s_dE{Wkd(FZ4(V9o0Ay-HymoXzA*0PrPz%Iw(YB>b9DPawPU8h;dAn*3rgnrp6jd%?~Pec^`M&_?wbM1^Nrmkmf)0Hh}dV z73=8VhjluB-PK&^yta8tz#X_qj%Qan`fydq>p#Eni92gkMi zU!nI=fP@+-rhTTOTfm@%0%)GBiqj0Itf!v>+OE%74!Ckwtz6CRMgxF?dnId@%u|9~ zy|;|RzG~q@H}ja&&PliKb_9AD$ByYo;)yoYXcs{!w(xU80zcRsy3D6p^y>)GXeY+1 zd3!gTTs$?&s&=82V0f0~zbb>b{~5_lP4T16nk}Yp4J9oc9;2jjuBfAnE@3J*(uOMv z@GO^3vwG^g6(4iWD@%KI70+Lcu`_q>Hfegp35?pIrf1NfBcM14awt@;bAUW;qunAp z&7*p5%*@d_cx^n$X|QbzA3avjZ_bD=*)`>I3r7%|jxGddQrVE@FJ2 zuYuM8JOEtzWobeW4{hWRYp|ZM9?Fsz*0AO^c*b7`l>9}$8Kx+tD4N{$fPL@G$uU2V zycNdrzUtHho3lMUagk*P!vd~cXFAqlbXdUBu0bQ`Q!?&9U&7eS#>1q8WNQU*^iDt|aN)l1V*XzV*@TXS8i^!#~Cb?um=@Dr8;?Sl3ST^I%ltWKU@ym_v7=!uML4 zi(gueqstQy>N~KdvPK-}JtvPa^U7VLPWxP6op=C8g9?w;T{1fn)=#pKM`aUP^)GjA z035<>M4Mwwgq;+#1n|Wek?GsaCi0p&PxTGglG2T#o@Y{PxUG&9V^*(bgbFHk*myFo zWUlXnWe%9z*<|1gj+m+Z5(IR*S0A`qXj-Vas*ytx-S`bcXTCf3L7u@{V$y^kg{ut~ z=>}V{L47o^s}D@ItI}AgiJU$8;?ukwa4sjXf7o>z@Nh>FVvf}3eO=hPvR*W& zEH7)t4h_V9$<@$_!&z{*9|F|o=!(}t@$Y{h%#J%(Cm+QXEkKvRD2cGyjdceAB2P#; zuJP>)dyv{JSq|m^1B2QdZp{&%a#2<8FtGfzBA3-ar$7DS)`N(P(-Die%?A!Ni|=FP zVQSj*yZoXWQ`GN!_r{nOd+&$}PDd!(@6!M5*C@ZBy{c~RV%Wbg^t5;m*q`P8p!h;? zRcnO039TJtY#u$%LHMl%myPG{;&`l$hhq@np(3GeK6#pc+C0dFudRM?HjlOL$ z%}N*v^pqD-34&HrKE95Qnf9a5_VD4TWD$G8)j8{>tbo5!XBckR7HX*na*(~a#4>y1 zk*7&fonF&v?(ebro0NUZl%IixW}7YQpib=ukyd3<;-(&Yt40uAQ09}>q0n0;D*X^$ihFooB504XL2nrSb5Bx zjk8JYYPgMRqX}88EOnw(L5D@(!DIvvPzlbx09z6x=SsW4$$JaoeA=)ao1UKmeu$a| z&H4>viU>*7HPgJ|uMUk->BcDb2Ujt-cC$z*CU!qd*!I6_IUIb=;}8gD1_QTi z8Ql&Q{2u#XB7AbR_siH=&i0m${y_u1Fo?cr{D2`jlAw1!syn!}yPp;wGr(HX+(*4? zx>N%nUSWlEAgx9rsLdv%4m-SERjVbI?s|`^;f}P0Ch9$sPSO$hK9xw4bgdPwYK)F*tlrX-ZeN%bMlUYGo8nvBkMfM!16 zDxC*j&+J>xJ}tfrITeQ|&;mwlXjo(d78L_%YOdK3f^3QNtiA(oI7)5~%OlTU>{BSv zoF%Acx_*=5n3Muz_*AjOV-5?qB*DrRz+j#oOcp0BklQ5HC&H8d zsDavWS5OgU4^S0stDXdO&v(cIlRaD=^I__ z@RJsfSXz;b><+}Sw7O-+V0`}b_}ts=-Zz%tC;9EmUjCxt zCQ;Iab?DL=3?YQkyOI0Q3}{o;jeURhFu*2CAYi>h&Oo~-+N zkwGEatPv821`!y%MRod``w9PhXMI0hxVp{91R2VJIyT_(gHKt=5(elX#Dqv8Qu>E| zu~DQys@&3={W$YDt`CAXLkyQl>%5!VFz~L|Hm-OpP)POuMAwo}|BO}jBUN^!Fs_aB z5Cry~PPBV<#xG32M>Lc4CifnOuCV`fc*_m(k|*%>vBTX~IB#K8WMEY*ww$bz z4#Mo$W2Q=q&ty)q3+e-UHbLe|p*(uU_dqX?I!723Nr7K1dY%ifM=eTb?j^6FhNMdI z1x6Wh4^>mh8j%1)Gn1Q*VgKW!=Pphh@GXU+uI2T~xG5zs1N4vDA9Aq*?Eq>LCGXma znvHu%EXpG&mxY0OB{T};34Z*F^)l;v=zKN1(_Z@X%ib=(awqZsl2uk!DW|+Rd$DotQ{sny=VO zhw=^j5T{~Edqzy;*B059JSmWX33T}%g%-(=!Aq=#MH&c4q&J(eXHvv4;!#L+=Qx(QueO8V9Ped9(NPiY`l+fFd5gJ~Kt-Ii zDly1VLq;kf06_Fr^wK-hVDYXK#VCY=>tOG@$*m#U$gl)b#Hh}1_6!RFm|_z!TG{qX zqCu5>`s!i5HpFrC-W71TtG_y5+a6u~ZjzsgyXuR@OjOK8QbyCv6<1%=X6a6gePx{B z{guj(E6a7UC!kf~f`wA+u(fCptP0cvV~R3}gFS};riTH)4&Jdl^hcJ6@=T}UJQe}% zk#z*6M|wj6;RTyPuE?swml1nhVw;& z6IL5cZe@Idw{xnxOyS(*&^s3>3e+?WL45aIP1@;A-_!(s2^7?2Ai>Tzrpwpb&I>3w z!A-j@hl;871T>y2hPbZZ_^cjlwO%czrk}@syMWysF=huyVyp$@Q^xy{)Ege+E7J0=USSfx`yE* z@|`zgC+L5xuvoEP2c>n9p3*53FS>S4Tuk@4S#Jfjucf^2Sy5xFXj+Y@PQ`(#RB5Nb zW2zVd%wyzZvGW)7h`e#!0F;uc30&r{jI-DgR(yn2F=nauDKF^;zIAJHk=rgbjkNo@ zOA#GxG(qSuWOMqiwd&Lziq&)np-muL>DBWCj0`_FBc|PHJedkWv#C9k*l>nf_8QI> zS9Cny_77>qU7*7u!w4i1BVbG0k{k+2nk6vkDwWGQ&c$!qGWFDh5N&4{Qpi=Zjx-ig zc)gCUzml?wpTWyF8HgJvG3oS9Eg}gaZ9)fm%l?s^}U>8@Bh}zVj$FT=hN>y_; zMYB>%?s@QbbvWkiz**t}*^96Ri00PT!g3C7wCJWn;1y+B1frEA87B8CQv^hDfz zSgWpB79>IDT#*IfM=t_lazHh3xB}g!qt5;D+X(*!iglU5A;LY@?IoJy3dCkHKo(Mkc11MYac;Paf2kA%x)a@SncDSV0 zmRX~=OP8GjBM<-KOlyosru-q2)QR7v2}~zQF4hMCQ8_1%VH z-iUmeg`q;hT#l01ddnin5huHt@Y5~AoO-iX;aMD`#nD044|F=gkyVS~7%Y3KjX(0g zON`dlyge~M*L;UQ)j4XN_=y9v@@#tKBA*z{Viw*NrlL#8P1F~H32+7`Savh@)(>D( zE&B0(&4Dz68t`lULW9((1-CJGn+!f_K+IMm{}eCd!vr zvkHDuGalSo5{*SKSrTd0K32y|CZQhXi5bd1r3aA1 z=0q8*xRWK9PGll!L`?&P;S#w>TjjObp=1H1JG$C1U?QluL8G ze84q^QAJ`6lmHZ`aBn1)OjXDp+JF<;yT53NM$T;>G?qef?&s1aC}bI`tbjLAXdYBp ztgWQ39S(9@;E$43|s5L+y!jjjFt2Uq-lCdjaW=}FeR_kLgY-4PG0DU+Q|Ta+%6mcYuCq7cm3C4!fu7OS%m0x*q@qj zmTdvgKI)css$Kc-gkg_a`DrNuvSh_Xj9F%Cf}n2*My9m9%D@^kWjlmnUAADdyU1B; zDf`lFhga49jZ$A)u45?jnI<$tc^zT`c9%TzGEDXxy|Y1x#TDGJ@a;V{Cz+{xrUq^h z3qvdjy_(S@#3YJ(Zp!p9QjkB6xQ5QWk#@uh1oto&qA7hUb3)J*{1Gor$tu_!5fr9{ zXQxMftv4EXgy#8FSm6WB2?3co#Vl;E93)85Nyz)<&KL?&!2X_F5dj|OQhWaakH(P5MnA-j`p2dZ zf1qhL4Gs~5N5>&dm^F8CsNURgkmTtMh_u#JHY3o}87A6uV?iA}CWElUlWZHnICyDA0~9lk2C#PfvBsuI-5SviF20 zMD74Uuu^U(aQZ)3;>)q;9G12W`daBpZUvBzLEj0%GzrdQ{@>JfR>_nFp|!I={lPbH_vjxOs>c`g}$9BLs_De zAE^FX&LoPMRsns~F}=TNNZ9qaCV$Ppg24vEdhB>!^s*LPV_oMu>Xkyy#-cmyvpCLM zL@)e%!{b?##NV=AsXXE*?Cv2xA_X?VB7nYniZN$=)IGn(_vWc&|@znH|3!p78Zn4x4ctN}-<$#6T zo8BcfG-x7~^`*@a&g+)ubIKoSUDwIFmdK+GivmaCb#~*LVjN~WOzwfpJui0M`*`2p zyKrZ~5ht>)*&Dog;p(}jvc*-KK ztQ}UFLAS3NlAF3CutJf*!3wh!p5EmeK^7SRC{{s9Y`_{7&P_xb)a}KRzR9w%@;L!f zv$oIZbEf@PGLXMpWA^;K7m2KoSYpt$iwx-f1Jib$K-pX1=7{UjVKmYhC{QaNZtxSQ zMmw)&jpxaLlh$U{-xJ?GhOA^T@3@}{`tmh0d1Vn0Cr4Pm8Q1kk*r8X#s-TNs3uKaXvR`**cXgI+ zqTls|z5;EzYJH8#pc8h+5`z#)y(uHe7|T_mDqVV7`BRmq_k=|-viv?g3UjZs*yN~7 z%J^CjPGLa8JxpC>o+)rO?x0pdva#fyd*7Am$5u3H9~dhXs)r2AvR^oSB2enkP$EcJ zgWx%{;;;xCdbglzL{*}Zc7LV}TsBb9Jtt)@9v}JY%&vS~!T>5OX*Sc{zyexv7R~To zK!_WMT;h}u^SxRT*>4N|6SL=zrz#G z%Jge+^G=q6(nW3kF&+lK0^<8lek6S+#c{?T`XOY)Z~t!~x&1VG&j<$P- z(;K!<@(nD|PGIaN)b^x7*zy$?^%m=CW%t5X{3`2;FYlU$4Ib{M5O!jS?){l1q5APw z(G2Ouk@W^bJ5v-E_2IourI*m*=>bRMx}<8PhPL=!5bawm?|5&W5Cioe515wT=bH$E zSFHE7On~;Fpn4nfu^u;LrK{;id4G&!sXz0uBvGtYob(0W_tqQM%zj4CLUM zE0Opm3jTDei(uHt_c3Ql8dE9D9Ht zyrCeRhebI!hJ-yX(nWf?<}>9_5$ON^&2t4BQXSXhvjD!9i-U-Ub3&(p)hL1AnV%82 zWW;PCe8lyN2X<7AN|i+S%a4!Ac*Yi}tXc$QTy=?0jC@;XmYlGKce$geLY{09`0u4I zRs}>pJ$z3o$b>-F6V51@99%wO1xi~U5@m!L?*$4>iq^{&k|WXh7$ws?JdAI^m7VD} zI}Kx^WAKXE1G?m%mGaPE(5tO_R-51c zh;<1*6P*puozZDtxYs=B@k!OF5R2d-TCHvK-=i0$w)Jo<;WWh(HBGNUpgym8NKg0U zs~8pw(57th6Q6|PCwiugE}tpwI+P=ylcNNoysiq3c4>SAlXNXkn`|OO&Ik;^DDETc z3&<#8k^GL>e!rE)cP6UDQ|jeRVljA_Wcti-`?tTfH*xi%ka2JbX`IoIoSb+m6$ErcN7SP4c_T}EI6#v@OZ`^G82 z4SBij9A7dp8-#pVY{Zm~RZAzWM_dV)<$$BU4gshEpdn{FtrZUbF=X^8g%WgpQ&qkv z7E)THX|^ulf1j=OtB zB^IUhM|%JsU{&ZP$PG{n%$=}AtL~@Lg71;^i#&t430;HD@!7IqkR&Z3D}>a@AupU~ zi>e3~#q$ca2>W_eOiT>n<5)~>zXVS2a8GpSm{SJGMG7lo7sXZIDoQkhtK9T>A+RdXIlwnBVdK+b5~UWp}7 znh~!Z@pk+mW9>$L4VkO_`>JUAk+}rNKo=F&z{m|?$2jDsLt`oP%FS!|lyRQ>zf=hG zT$O#(gR=r?X3-x+e03yBCPh=I^ueo$6~J)23WwssX@m;wOp0^_Y6W8+2h-&x%>m{L z065E<8qX`S&co}F7ft}@3JV*qyf-G8Pf#brH-`r*n(>hDxeP6;;JNj6s)ZSH!060h z_aV71w?gq~p&A5hCSv~Pn|rT*M3~1M5e80p^MB`L>J95xFB|hizLilLRv2&_U&cjs zxuGK+`gwvjT#Sf$9>lbNg>+3@O<2be((KH%){WQW`pfkHdMDVSSI*ozbU|&l(ue`d zKm(l~J)d}Z?m~RmRj&da9txJMNOJ4uV?=dL;^RKh2EII4yO!Plb(<}f@DA!;LJ6xN zOlCZL-@Bd)ybI*+%B;*@i=3pJUBJ}-+v3=(fTXK1Y9YbI)CY|}qT2{TpHJKN9PzGN z1k`m<)xxWE>{ITM&z=GgR%mB%Azw3`L;*4Y;(QKAgcBXK)<5IX-;f5^r8cD`{q4)hgcT{d%SRwSFrEQQ(|s=tR?+MuG*Qqc&+Y%q3F+I zpkwUfUU4)F=)UFbTu}35-%(1JrfkblSg##gw9X$@F8HcG-tgo7TDpKd1trlUK2VWd zVxhBt9&yEDIQ9(Vyy$SYXOyCz@=k9Eyih%cth7B)N~MT?{6Dr9aNnPf5A7&b`}bF6^N-aV z#Jme{x&nv!(3A`;cBOLGRWovSnNYvcRQoZy?LMLEa3AF&0>ke7tv;71O}P^)Q+&F% zu8t_qTF#1-qJ&psWWBT(NY0F6wCj7S84jvpt{f`iw;hQ9pr_z?^ySKFK{}!2geD4l zmY_X1L2)OS;$~{OlT6k@;;%^-H8^H#?jg&_BomQ+`=gnsDq$Av_2$hVaC<H^sI7Y z;xLelU|2MI*z~@Md-RePG`*F- zg<)!4+ChPfUGV4p1fK{Bg{a}*R#cb!n@|Wjoaq2(^Z_pN|A3?FZ5Y|MYE2>2bs;U= zOHdA405eI^j}=p*kC313*MC<8Dgun%QKtj?=>jH;aQ*uEnjF{N%P6&v24I^~K;2gE zb2U%`7`D8zL*o$5dz+9fUEcm9Wj~0ZtWP1aW90Z|1l+-?nE3tqeA-f$<`O((LETcM zhR^3P4K(Vm4wDnUClXH_>=3cLI9#QtsgvqbFlk5~u7O^f(vvH0>5DinJ=;(-e zc+ph?#<^nZ%1dLSp_|>12ThyW+CiEIjlCEo;;k{7rPBRVwh5@_I*0>zAHDdooa2_ZVG01R*Tt4Gbh7 zqB0;N;=T5cs-R4-*a+?u3pxg`E1SrZmt}9hjcN_nkTI@5W4d*kE~Vs~G!OEevz_cI zZKgd85o;^3KtkIebj&*$%`BUMQxWCO<4kt3Jyf(nE74dA6+agScWI86#h`o_o&Umy zybMZ59tL~yTG{M(X(^9R1UK+G10^;+< z#ql`J&kxLR_3}KJRM=E^jhQ2N(Dk@psu?zE2yEUSlOx)bi>wtYr3($HO9M)7yK}NH3nsNQ@jiWK`h`+B|EXvN9a>lFEC(UJ`2lhLGP8`oPdaTS$37UN1;+%Tb3!!79a zpN>Q)LBnJU_(HnJP={!YBsh2&Gg$G7-+j{8}{h+Nj{6p**T0@X4&SmR8S`EW)Vt$uA&3N=U>+0{`Mtg^k`dSB`E& z81ZoM&`2YZywD>iGfQj=6f&$Th(R3{L=@O&AycS*qY zZxf?F_VE4gn#7c_{PZ|~>`4h*({uPi_e|ziHoJ0u{ZePFEBSG0kb(e~FvB7ZLG7Nr zgXhwQA14p^;GwDXgzQTJf^H?wA(so8?= zNEEfAh!ni1`G}p}o+zlf6Qs5JZ+`Z7a{qKx=DZ z%CALJvY7A1fah)G+;QXJvcg#V%&2?5D9m3`zpUE+m<FO(2=3s!yDfP4>IAcuTu6p(3q_yXU(-;!~ zoC{u7k)Tbf?e&~D2UAlfwT8XFHC>C%np7+T=a5sBxwB|*l>{tc9iA4> z!;01a-n>LdCQ*Ry12FTpl^|Ge@L!Oks>D(tl7V%$;p6RuO~UfL!;plzSl9yNIpaF1 z$#R)fzdeMus-hb~$dJK?1BDF>QUEBjaq#_0^Ti)@FS8YS0{Mx$LOHqq9F9WT99 z1JM8rdpX??mJ@`0;5e|fTAFT=pW*or4_q9|)_e1b9x~V*{t9_6CF;JR&RyqrsdJoG zFQ1HJz-E5*%Zp{_wrI-04n{Mek!Br{~WirK*j0Z5-BeP`|93he1E-n zs^ytNXmIE}Fzcqvvq2VJBPocQaw{*6h34Jb%z;WY8OMXesO$!*DFJ|#lrwNtOI7=n zdAoHKxTZA-;4XMn>1`eLnbl`j(o=VdRe_#s&NPa&cs_V2b%gEg7^sI80S{MMpB{HZ z#xSRsnznX2h+FGy zh62i7K4o6A@TE^C-4QKbG}{MCVucWRU@R};SMfZ|J(!-0P-r4o>K4HBW&_M73R(%4 zT>Kp3nqu}^;O}s_(DCHMX&4^pd~pyWp*R1mGj6Bpnb`pq%;!7(dFL=DNB;_*oK+To z(=FfuBEaXm-rrR3!*RxAUi16);lyoPvr`(mB55@6?S!L*R1_&9R>am!i4H%8k8`SvSo2Q_K|v9{XBtfM^g z0v|nO0w%`EHHMk>PXda6b3^Tage}}pQ?5(a;x^#qh4xF!Ftw~<>|WC7R+WPeIRLNl z%HnUmi3AN-wlD$_EbT51Rt55VomBm=q^Ig zu@B7Ah;o6blL#a7G^@e>F%^$)d3OaWN8i!&w6_lLY``8P9pO8!w0iyF93uI2AYCr# zqbX!us&f%=tM0iP@l5QdBk01D4GGQe^UdepCD-e{jno#n??hk8V(7C{g@by-Y!Qd_ zdmmQ&7zfkjvxV3igNo|8*q@L;;?A>7%nNqYe=4yd$c;(4-_XGZT& znu;P_GdJfohz(-|yU*rW?~L?JDdCdHpr!Z|_>ioBu~_Jkpch%Y3*dg(J{{e1>=%n2VGS?kMXcDEY{3PvDA@q>UE z_fvH@2%IxW8GQC5Yt8jAu|vKQ6GL8v%BY`{v0>OuLl;<36{!q@2}~ky_jOBw|BU7F zeCK&yQjZk`q;|sUo0K}RCoQ{91n#h3{-8?ywzEpg%VL_zFW5ESA_jU)eUU2Rrm02{ z$LEj_oZoD<$rkWt^jP(FOE#+~<((O@TF(ze6|+Z{fjj}rs)`?fz{!OR>sb|H2i@k+ zZ6{?@>Vl0mkU5l%Lvg;c9`)xQUj;}CU`9w|o!#R?=(8|=Ie)?MQUr7%Mg<9YmxSe6 zpyxt2qpc*V?vr?>(YWEyxM!D_K51oKDnX?Nn?$n$gLmiQ+V?jW7I{ilIPJcZcdu+j z$E2s0{NC^dDuV3Q#PcMVh}DE=Jc-&2@*!AO`8QadMDj;?35(qw^YZu4auPahNm_)_+9Q{VRb2 zXE9MrOT$_0(m^jmd(8v<+FLU)4QtSlgDnUcJ?;Qc@lqv&9L&pzHIG3?A14j}qH=P+MX`Q$AdXkc^>*PvDS>2-{HWH>w8B31+$L~dz1 zGkI#5HnNbXR8mFJb?&^Beu0=K?-6x_nRWaCQ98bw^H)0pWx{i*fvhIKV8e+oCC{wKvQ>Uv;Si}B%#`6`64!^A&0Kt`t} z8zM^^GdBDIR-u8Dtj;W83JpYaX&jn_%bgAw0AOt@>~3YP@OL)eA%>f|^C0>V#u{$* ztkE&y-q{hpl(NIpUq*KFy5xc*BM=lAoH@O3>XB|QpcF)o^3LY2P)^&b{~t8-tdoTK z0@V4lpZx<2GFtjRYSU8;llt?iHVpIj{jAo{bbtKXn(18XaB_d#pejy_W6XrFVJ5Sjq&i_Vn}bcnVPTt5*Cs}X^L%*o*!CoO_E0!x&he1Jn+{|cgxeIQ1?iu8)= zlU_Q9TApDbm_(k?`3!|`^~`41uDU%_&A<{Ro2O1_I)jQ3C=$}T za6{Rg8MeZ6m)e4G=F4TiDu3<<8`k9X*mBN3E_zpL zTrP@vB#w01h5Im#KR2SMD+e3ooT8%V#0{egC3dgwlS#aEco-LjCLQ8SLa^_f|HqD$ z)i3(T^q|*&ZYz2daKl7qBoNh}n4SRRKoA-J5PnHOto??)?pxQ2b3`Z8PuNkF!2L{9 zaZ_TJfET@<)8y6CZ>n}F^NLK;+R0j^@rq*B!e2o`C_`H6&+EE2$4WZiq*Kw5yeH<& zV2?LVqKrpIWsIC-c%xvaI54+H6ej_$7J(TANrr{;Mqh{C{0Mh>S49hs8S}d;^Hbre zwl{bLbPza%N}ovdy|#BwYCAbRJ?dD=W)b4^oM35dyo-jVrmKBcI{~LvL7fMIEQ!W+ zzee>iRWLx{@4->p?N~`$7BJ`W7SPg*jde0wx3=rdg8VWM3F9u8zHN?Kf(4__8?T)$ zd_K79Q5xYB4)33q_C!7^?e}z-G!f^@Q{Ab`*A=?uwR1MF%lBgXjHoLWLCj zyyr($v#&T8AE)lO=;IBbTDqIq$FdsI#o;dGCmk@(Py_Y{iSh+Wo#lJdsM^qEZbM*P z?NX+es07HA1%VzR35`RftLck+CZ3fC6%|c=)M2(LM;lP}m01F$w-s(fGO8DJy$<}; zFxEw2?Is<*ZBQ%_##NO`!~mp&`p|IZIi#@_%*EBye@Tv6k7qt!_!@Bw3arTEg;tBT zhpT<8+8u9`{wI2Xza2qRqiZeD5dbR+*AXyfWX3c!ok+1JK@~f9$;jbkqHqn&`cnF@ z`g0tg^^jz@0ZAQIvITZi!jckxv|II#ygNQ+-DT`9%duLk4h8 zIGm{m9+83TPAjpNjNu@0wBiF`Q4ai2{KBLk^uSk7y9!^k2*dp$^+Lz@I|Mn;B3i#K4nW>vHJ&~uCd7QzTAI~P`-fNc zi)n<0J?+(BXGgTt>&^TjjRkE#kK5y`|LQ98xN7A7m7yfQ`eh8Etty?=KvW@A`5rI= zwpS<>9wV3ucq&df_kwS7eNh z{>Sa*Ai%9z=0Ue<1iR>8;rb+`(Q*!d?3(5$3A1s`MjS~X9pq2JlTK692C0p2yG&IPk*Evj*s=dxkm1)j`Pk=qpVS5z!Y?RvD?lgJ)-erbcv9Nyi>rJc< zc@MlH-P%cl-&(Y#r+do<&!dZi6n2$Tv)%9YtBKM5+`vUQ4)GAP3@ZI@*I-%*43&8S zEbtf@9NQ?|^-RVI1$w2W@_H`YzsSV3P&gBhfZt@*ab<#)4OCUQ=)RYV z96v*7Rd5&%GiJXhm()J-*Jj;VH)iA?BgbC>ibU^~qPt*^x9T?BAJ2w}c7mP#6$a{3 zH{;=k#@aUM%=*iCZaH_zh zQo59n1Q5P(O+!uccy|s5_%tgub=RUBnE5a6W0y84gG*AdA^b7brH4RY5ugPkKzbPW z{i;XY3XWBWJiKj>Z-?JfcTr)4fVqJ+_)p#ovP}I^&PW zkA-kQQR^_vn)_m$wj{LzDql^?6U0IY@<&G<7)=P7Gu6Yd6wT>JhmBk2TNqynEB+v1 ziFxmpg8(+n<(2YoHM_L?f8Y0#?%Eae+o%vWw6aM*=gn#tx&r&8Rs-dbw&WTNu-t&# z=%dUKbJx$%%n^FqP3N5UK>$k6GwG=r}04hX?$P+v@i@3E+ zIe%bx0}nB!odYJlBGEh~*9t$VoV}r5)(lxI)0TXium5Tw?i&W}L@bFDr>EL;YzU=~ zytkmR)_R}q`A4_SQdgJ?+)5Nj2+fgMxu5Z(fj2jUB>gY|+~nLNH<0bX zyiSu-j)2@5mAt&(p zYw-60Vy{*>ahSQ2f$t!vZ&F&SK=IqU!Ev8^EA~uB{@W0qBUDrPa!trEctp>K^}u&uK18z)LqAIDKL6wljvTUafU>^W96 z)$+5ONd{&q07JRDrD_0&BMiyGRl2d`NV%y^Zd(50i{SNM%WsP}${#@w6&bc{YO!bQ zE&leU{(S`?BE%Oy;uBmBNfDu!Hi}rvqqkCYl>SR+5hP9jAn!*KF?iFQyzE=;gExc- z(Ywy9H0q1(=H^8f{tJ4;`Ljxlj$%(b{B!dj^!gy}Y^rY18f#=qNxP*p=XIt|t z(vx&?ZEMh2RTb;giRVi@%%qtyz+Zdg9B&O2JS*cwWPEilni`ubH}mkAqm$SIb)t4o ztZgMkogYmi)djLj)we$|;MQCj53X&?on+ng3;skZZ*8bOlX~)5Xu|{oq`kn?+81KV zvzqi%Yp~L3srQA~;3`&d>g}eRB9S^CF;iA1)6n_*kg+Rjiqe}{aK(`C#=$L?Z2W4X zWt?g@|1nXh!xs@S@RqG3Y5m0Hfj`UexLbo# z|Ga*y;G58Hj@47}WIP$>eI4_Z7xu%IoR&}DyQ?#WiV4MwPr+kS)|DAP;h+${?=snc zm6zZo%*0LLI9+Yri`yOF_i>(v6}@Nk2rSBED0N~ViItM$+-VVDQlXC17ty}-oq|~N zkkZ?hha=$Yci_b?vUAM<`9g2#qkpJEn?Vy-cp*ls5TL8olHU?rKGAAz@GsD6KgP>k z>((_OQD?#N?!LF%G!7~*my}oNKIv}gHMMIh*(CFEL!r_XOB)*TRP@!Q7F9fa;*Ztl zeh2rxjFJ2%>h6?hwIdWGW4v4({a!PRVuM+{vjr_L{*#%4Ef}ISMzTxv%nVh5NxT03 zE|BTD3iY6M%tUg#W?gXg519ciFerd-rT9>z6#qn|6Gp8Dl%1=P-3xhI91U%LtrB9b zg9W?zeFUS-Z+KUGJV%JKOqrW5>iCv@tlq8BV28)6yYU5M?t37`r=BSmq5hUX;)109 z{GXlJczqHfVjuS_6(xC%e6lvimr@6~xS+h}l*t8@2C3}+rAuKB$RAZ6kiW2c7TTvIOxMFh{G$7u>=ADsZ=swsJHZ4N^7_xzk33A#m_ zUsg?KQq8zqGD=>O{Ppo%J-OBdepim$#r%PhvatELTK>-DaQu!9WIA06p$9fN;BaG| zYff@vh-)&x(@RB|r@$PCN9J3$ie{Brj;KHJIjKa2<5pNQZZ%n^poeX-ZT#s z?cy1*AN%SoPgS%k&cLy09M?++iU@7#=-~LM;f94()Im{ML_AT-C?lt9??Ah&?@3$4 zdsp)if&rsXg^7Ot9|o$kTCp~kmo)-L{z|FOFz8Lmh@GYhh4*O>^>|wA;isT6b?wnXd&}1rm0$Ke#U zArm(9lKjPDjSOv=bK4%6HP-Y-aSORMjHuVDGjIN%jZ-UJ2@W{3_iSclv-3w56csA{_Q5If(9Os3Wp8}%UY>iki+#rRnxw&x*gwu?WyVicIU zHGOnhcBu;A9=YnULev?VHLH5r8hxCU)CwE&zD(dXSO<0n0yMp`8~Zhev}lJE@m+ww zHMYF`Z8!0Xtv(*a07IY0;b(`##T-8!VDyZC)7_QkQ&0Fbsle8J#%}P%99pMbSW;66 z!%bjyWw=`@ZD;AY#n&%~eS@Xc-jYlTrtiCR2^SO$(_oTkBis&@kI#C<)VXI42czZX zW?TAqGEiO=EIrc{9IP$yRtHwZ(~cNQ=I%$Y8gZ*hoaO*oiB|7NXNhN~W2}qbq)Tkh zmB7EDfzVQ9&sn4a*CDPQjplby5+`E0N8(8%U(vya#|&rw+?ah@HSw8J#;rv0oEG3* z9Qa2eTuSu`i~oHFsv2=_Pg*%LZDw;C?!v`%xVLW5xou44+g%En&RHBVAjor_GIVf; zjfvE!yhHbJTLk4C=YSM)PW(yc@%wEtvqFMCRAYSS6qU1lUEj=j0&jSiqHqASnustS zzkc(q#P}SgJRG%T7Qtr=3-jzKf7bOxz&39?V2>iRZ0LN1UEXY_j~K# zfJ5`fz)t)va3FrT9ZBKsXiM&U*Xs=hkP@y@X>mYV zF?AHf!KajKGgD$Pg7fRi4fT52VIJJ*Yn556ha-q)fz= zmtJ_xNA_NT=l8@YfwJD^-=ZDXl%?pkUmqpJIeE`UtmqAE23flfD3Ne5*1&$fMBBf8j({AwdhMYEeN!Q*&Rx-BAc97)_B_`1$rs8A zb}VA4036Ivn`}ZnuO3u2@*_l`GWFKw^HWjJ4GitC(QF2`z~K_^lKQ#d;z0Tz06;0J48RJR|%7f9G2=?&+^BKS4N+LI_9Vbl+u(3w0#FM3h4Nw9NJslqQoL zFuEX-v~9}v6B=dsda1xMQ68-mWQo6GR>zYOG~>8hq*T*}IMLJZgZO6^+8q5Kac6f> zwh;VUGf9c>6-1)t(iA8Su*}8|BIm7Fj-!Lb9fe>7^<7MWJ9uH~O^dO}T*#f2koX<5ps^&U@m zZb}uPLe6v2B*G(|#-Zj}15&0Hs#r`8)5w)SFaMR!ONGuF>^-3?JzPbPPc7Iag}d7% zkd6X*CI0G3_fUq_lRjSANRYIDb*tXfJ&c_LfasAD6#`7x!+}+mIn3d)l9x6;yPYvII=M@vdv-Mz69>N=PuBwZZt(BNEzzv)+?UaI_V3j#U|mfOY(; zmHKbwcD!ijywvC+3L|q^5SBL2Ci?}BeX)6`@!2ZaH*;tY;hqE`GV9@Yjz5CVk@_w6 z*NON<#1rlYE;@r9m?*bL5XRvHWskA49xhr1 zM<9NfmOtk`VPh<8fZ0@$JRdi4K78)aN0osC12h8{RiiBqrC_x7)|jT~rPvu!YLj%Y zVzq8obM2NTRrJFiU~J0(`M_vRpUT%)Gp`W3FkPQq@AHj3(B?MM$?V}o4+vR)G=6$; zYn#8|4iIWsl{ZX~@~pQat(}zmX$l1>so!5r40brNM&zh>Ma1|#V28%cUvM*Zd1&-@wm-2f()46YsRv*H@j_kQk{nxlu5Y-I193{TIdMQv)+` zvdnj~VfJMHmbdQNK{7rUAIX{r@^kD@Aovl+kqhr@uew$9gw){QZ}RN3kX({vJlO$X z%~uzTH!5T-@v$EsabC5BDkh#+b)|}Sx>WgPVjcpll%Nj#UgeEkH}G4H4>LKMY~Rw8 zup!>P9(gR-gh}gG;<)JEIIzNNL|`~1tnenkC0-;Wk-9EH5;~yy57U;^)|0%VFFXj ztFN98q+!muCfWGbgIf2O+Ca*=(gmSmrul4>GYPP<=D=BDcua} zpb<_hY`w3}GgLhy;!e^RAm`xFYQ4B7W(@5R@jGft1 zXX$*3p4`H$s{w`B=#>vx@Aj#=X>{QIONAAyk7E-+=aZ+c|up= ztfkP8J&`^W)j;Sk;f%XDk)W(?Fd%wA`>IbqL_lH_m*#pgVrBvrE$fRupX&L$dN|cT z6?qK*8cOa6pkw_^t(cTT7ULz%`$c2;H*BL2gRZk|viZaoXq&#Fr1NvzbQc)eI8_H; za~-H)jf;LdnxuzE!8TH%O-&M#^+0AElzaL5wgxVf{jpbRQxN)DrTkwVIEyPbQx;Q5 zyeUJ}eU;k*Y20a0srfMECkV&tGeau02_#w44(c+|MSfjPVBEZsm^Ewt9YTJW%4iMg zhG3Jw<(9aMz#lqdB0=l2=O?$X6H}C8I+vZoia(bILl;H0psG^*EX~P5L&5nntd^G? z8U@>6MFNUU(~ABE=daGTgye~z`59QNz5iZ1|4&_ySr z{0OY+65AAHpcdPjfvY9OLtgAZ5DH-(tT?LwdYV*#y2KMU@uBDU4LmL+#lLQ1uWRbk z^GeIPM!iiIB$Nm;md9p#MfauaynKc3r-$SiB(uabGB?L0r(tOPQFMFYQ5z_9LSFG9 z=nxK+!o|VLc5z!;dSMc;kHgv+#kfn($Xmjl>L z-&BJg&Rg2sw8Y@b0vCQ$?_jD1?c4YJKd`u*sGHn>!1D{|N{#@&j70Z=4UY?ZlE3f! zN5IeLWOXx8FOvT<96L%qTWD*{F$y=9WMGN*jy-mOV5Y(1py#=@SaT#*d5MO^SN~YJjfFJ_ZDvz|Z zXSPpQEPWAgz|D5aK<)AN`1=+}eroI4XYZt(bATne#`19~Ou12*(62`X%GGy{z7y@>)`WZf&?jo(BfL`F!<0$vIKn7+LKev4hJeh*>2ay4s%V|WYIf24 z+d-&xE*180gNWR*g^udn`CsVlU6*TN!thhV85A=NdxPKaSQ$((cM?t;l`CC*K+UHO zK$sq84$&udJgkuWBGVQ*Q9z3^PK6xLp)0QHoo;vH>gI#l<@MwhRa;lRIA0vA(+$Lv z(@2cMGzjq0O*Q_>XM2+};5hgBcZW$gmA_;0^x+Rwv}K7k!jeV?-jrLi+F5?Dc#+}@ zyc=NSvhQE!G6~&~xVfzozRM3n_eABYfXgx66 zk+zW8A=2#F9gUyjNgBT;<1-VA08j&Mdj5j;yyg%=oj6;tcHiqTYv*H%*U89({uA9< z;%I%52D}hn+ep9lpf7DHA-`F?kcDF1#f=?0__kv@6)UhYq29<<>z`6iiO35Hi$zC54&Qn^c!$rd3%OyyAE{9x;AJ9slb9P1q^(49AJ zTx<6vhl%OM_>{HngH7^r$^3sq{?Ad^ z*>ywy1A{$%rOlJ;#I5~`R1ahFtcP^0ZW0Ft7IAFBu3@r5?HE-tF*~1$npOy7MteQ0 z{bNN+Rmg`hy-f?_Ee9rgDbdY+LVxWDtj!=6n{8ou3MxC7 zo6&7$kve?6Re1B^$AXT84niTxQ(&Y4;zn}D|xs6 z9FHkR#0ySSnTT}FGj3k$(u_3uG3;-NS&~d!$j%ogfGG|CkczYpC!M^aityv3N8J}Y z^e7R+zk88F&@z|+H9*S0B+PfI#1U+F`NAm8q3iZ+0P+rz4tA|px3{g=rJc18jqCB6 zg*E&R%Q6qhmc+}zZS0Vil=|Z#NfW#h@qwCvnHTt6A;n+c%w%ysy3#EvPqU7tLTq1@g!v!kJ6M9)ct5nB9q~UdNKQczpiY41V%j}L6^O2(! zD%r|mq~{-krepqSFvLkY;{1A~w$g)u)!ja$DsXt|EuPO4Gm75O1x64$giEAtLCg?nl%}WL2gS4S5$1VTat42NIt^WT zPRvH@#8QcM29GArW-*kRd^RtaTnC^URqyL-LQM??|Jd#h-xh4?49xz#GZ*YP`W0oyz<-H+i5Pp zdx_*tj@mshh=mtBM8Qw%2y3!$@@dv&Sz`~qOT`%S?$*$9FX#k1C-)fPm}KokZFvqx zE~pu0hC&KL83pt&o!of~uU}LKpInHFc@NNpdNNsx0(l_1Z%wpu5C@6-wfnY+1ciB1 z8*&He@C9dGtTY+l`A-6seq+sf2sYvgNeN{_Uik60yxSmfa2&G)ZXm1N-&q~L!#e8K zvtd&ge~7K(tM?{4Jom4D!8o#y1LG)n9%~BaIo$LmIG73UD?`sIgVTGO2UN=lV7rvpiv$tfHq*|m;Z)aJltl*p#=I}J5R9Qk>4W&c2>yO1W zFxk)E$!A)e8+5OIJb)@EONqJ?{?$kmV+!%xKAIpm)Kr{G;BqD|A$g8*KVnxZ+7!Jtp`PepCO6|dptX~YwWXRUJC}8 zkOpG~>lY>0=HEcc2dZ=Bm9Q^J`w4p3^nGP;<8b(0a$jIGiTWU5`meev;eDgzZgjh^ z`XdMH^Ko6Zmr`UGUR{rNh-d=rm|~s2CJ#8gfdBuLf|3sZ{*nJ=9g~QGe#`&Se zuoXQZd$Eb*(!Bbh(fult1c{UgZD(CWFGoi%H+pvtZ5#>jw*+N*rzS)7h$2_nQZoBX z(~vt6uy3*8U)Nnwj4w#jWN0FKBZRt@_3KL*$?^9JRyL0{Q8c_t_~R1CiOTu4Q^0<9 zAmg+1In4stvE6}y&7l9TFaf)Ys~L_nGb-OCD{=gX_?j7He*?g2SrQVQM*#be2_pab@2Vpc8q)$H$ppYzmRs5`Or%WI65kJwXnF?n$RY!I~y zQzCyWc_lU-@Ih+q&J4!eNgWeB6OD1WvWtq;D#NQQRNX}5NB)&i;_^(1FP*%8wOEic zTzFj1)-lMj5}@jNu6T$V&fb#5P4%oQsHrtYw>%MFWO!qveaUS#M`@BUVIp9rblXES zZ36v<6=n*@0ZnreEE|Su^D2Zo$K$7`d%2bF4bmp(?c5yo9Y{@ z0pnpPjZYs)g+H$3vC{5dmOCK~Ik!D^{Y-(HwN>E!NK|Sy&|Go~>j^3tArzjWPl4#* zo8G9^NL{2=wYr9(Ry~9Cda6nxOe|2Rx$ooVnlm>}YMtFS%cm{zmn&jBb5eDdWK0TSJTCf6@GOGJ5 z3SWUybmN{UdU~1kAb4XG@QE#-QRUvD&Fv#oO%#-X z4Lw40&g8-4aM(D<+WqL|l<>h&8)O%wd)8<@Y5QGA7M)pVt(3U}2U`e?84?=-4pNBU z02u*;6b`HgB{+_bJ5I2&0JPp$91qos2X2u+b zx(@Mak?OGc8%B~6Cfx0eM}u*e zgDL3E4>vCFyAFXS6*x#LV-{`l)iepo#m+7|f|ik}`8B_5W>@+;AuU?8Yh66oBxYOZ zaI4FTNr`%l^pp?49JM9H1FHYTEQrS0sI35Pl8F&x(rObXLwRxu8;FYMT;l$0!U3N@ zn zRONOd%M^Vs>oL%5I!U z4ibuvdl+cnx%68$-S2v*0z2HMANAk(ABDP*nX$#5r7m|^96?~$q!OylY~UAB$?=Fj zxqwH)z{^YHfQ)L@)=eh`T4-u$1_H5Wo+^A(R^39#>p~oI(HI^zx}IBz_sPwbGF)!i zj&_N~^PmQn-tL3M(zrPM|2VRN0k<{bU7-bY54?2p|89m*pFfi4DrIAuA0?Y^;cR-u z^CnPtA76worz!WYEyx>Og<76daXCs^Fs2CsiL)Wy+v5IDGrQ|XL!l$CAxPSv>I;{F z_?psDT3Brvd_6+!8uTgg$i2fgi0CNy3e+J~QZ%Bbri#d7+c$SDndlsewR4Q|`8^|3 z`{aD4k&WGioHukL{Qhz6`alpsI7|cgs$UK@o_Le&9Qbyk9Tx0Q%}FiEaSqs5 z4iiHb<2qs{=9hd5-BxGbnmRiL*c^5;uv+~*#^?;Fm*9nm13Y~_Q4Yo_cIH_-jDy+L zbc_~;j=tb`&hW--OeSR=h?((8>dakClz{w ziU?`+etmz2*F$a-S5hTf{TOU8_>4Mvy+4F73#-P}?ISwb0=TY0@ zakZu>@1@SRFReCxCO`a37F7W{6~O9SCyE@0_IbJHYz|m$w&wQMuOeN;PJ(VpN9Tfb}$}IgeGok`OUu_&a%u-zx zS-+MGLLb=E>&iR9J!gWO+?>ubE4#gN8L=NgUyt zX1b{Rx79dW#E3jJK;7!!%bfowM#tQ9S#2tDdVD^2mY?EWma5c?+iboAu==y)JG7a$rSxM&Vu8j9dpE=UrQ7(%L@o;Sg> zC-e6S#(A4~Sk6Rh5z0}i#>ezV2P6&Zl%Fe^s=tG(GSaWD*B$>ne@X=RTnYtEXj7x? zT(*~GOAQe2SLJJ#$&KgHAOi^UDm@r$(>-D(en#XwK-Xd6Ea&?@Dc%0n zj8wej7P~KI^rD0BkTB+MSnxNyAa1V-!xPQ{nqit*Z6?zVUbj7c9X5_K0&68B7XPn-}h6@^)%l<-An1O zCtyJ!ql@&U$_2P+eL$=|Irp?^_h0veZ%Ia0nlt5-Y1c(y0Xb8ZmOvj(fQws`*|ide z^!82lov`e#G0>=S<;98%L!?Al;F}iOymZef%>8X?+KXrL4FwfS{D5_(L7e7aOv*F~ zP1Tveec2Z!X~i!7B~g7)O+^HV#uYpvghwqT-yoy=N#uP$UFL`Uv|v_N^=5MvJFc|5 zQsWY+@Y1ctt|FUZtpPCGe`ynEdZu-o3Cs7~G6kTf$&B`o=Wc)@#zGZxThk%R+#8L@ z!MXh&1;u#(=-ir9R5{+nwjA7$JWVT&N53>}vxA6i7?8)`vLP@dl1jfQ$mMT^xHkai z8wm^y8#wwz4ZFW<9sxv0;`b)y8G}0`UBiYeuT;v}Ce^A^_Gp z%SAmwH#+NUQ+~-m2j_O@d%x83N|RR3rJPadUqKp;+}p%)9Q!UKE9Pv4IDYZsn_x2+ z{Tv}fyWFTSXQSaC@0UCHkxGo)(DYHDY|g5i;&_f<{+VV3eY?F)yzb04WVT4LU0?M8 zIue<5aG8faqA>a?S@URs()2hwt`~{cC!%#1Znzmh`N7!u7XeJOTVBY3{R@7ZlFqS- zL~ru(!&HI3_@AV@h3tBK7CDE-`ZSLEum3eDBT2FoT|dZo6VU%Uz3wfO094`n&>rb_ z9w16SqB%hvT0{pcD25tfEHGn1kO?QyuPm7F1>#5FNkUXqEY;V23hT%QExUI7_;qfX z46-0X6haKmR=pixLa?c@XH@%^B-=0C;5cAeY2g0B(vaDIQ0b4WIurFBAj_@9*QUEV z+j87^-Lglxw#=GtBswTX&*S+oyC96uH4Gk2+}2&rKPtp#EZdzvJkvXZyJu~daP=g3 z1C)y>(~rEv;%V=*lg7XzNI%<8Y$H#dY%AE-X4A3{dRNk1==U_m)cca^ZM0L)hKpp1J&+d; zQ^=n&i-=(&E(j}Juu+rz(H@zRpsu^fGIEF^wi z5jl8?%5x3_mwgIo?4o*ox%X=;hGG@IV>d*vMwxzc0lA*g1|WK4V^!WrD9rUNP<|NH zB9v@Gz!BpxC;`#wO!R@05}PnfgrTv7KL8*Ni3HE3TZ0Z<3uQAQHMaeXZP-q-p>7ht z-Sg&sjp21=>tiiT&}qWL9TACFk}re8j};eXgsOUq(jx0oiEP5_jCUeT&ZrQLaghbk z&m^({lRfH;ujUiv>@jA+)>6ssjqQ1#MzSz=Uhncj0nvDXTo}WcKy;z~4K%MldwexW zn<4jyuv@%^{4G#cbc0MMfoZ%8SrN!2Q|p!akCDIlc;Yg{uCT;&&?|sisRTm^pyVYj z$lTQuTR>FgrngD{MI|EX#BxW|*z1T5dsjbo7=LwU3Bj@xBt{ua1~bj~BkLnz{iTAs z=(2gYeF9ciN}Urh8?G&xpH$PXJVKZG^xhfW~>ssU^EZMoC)4S`Pd8N>Kq9gdhF?WM>7E4 zR`dP{f3zQso92l>7J+=A4I#PVq&i|(%U&%&JASWK^hM1VZqusCMp%e+YrtzN9_g)% zlgB{m<)dM5C068Hgi$D2U4YAG9&0;nLH42;hV*4dJ$i|yO?R*SL)4wy-2<>M9v?n zXb3ICU2fX#S8S<5klaMXxwac2{F6mjiQo#sqUL)p2CTIE<*4wSj2xp_OSz6sO8pzO zzu`PqVL1dXlZ%`j07NeTo1Ugaw;{g3I7jBlGDDy`S2nho=W=^k!Hv5U#iu&>Le-sn z5L(BZ-4$n`h@J#-L23 z^xPkUW z@*jddS>L)7L-;%&I3L|;q8^jZN-!E)RJ>rbPeUg;IPJywYDLPZd=Z|1XKTvBSS4)eCKMQx&U97z`csla?Yw(DPSChR5i7mzvd?I7tx#KuGS#7S zyvUT!JQT2hgfor-m*3bY>AGy4Xpkn?DyFgFygoj-yIUiNmjQ=4&1;n54;;|9GNpUU?9}?4~OXyy)V@J*SblHvQg^euBqI46?RrEets-G?Ra2!ekL1`6Xdh z7J>NEN(4$;J7J7OY1e!D6oatZ(GMs*KbPp1Hl{N13{xUr{yQDf+q=~G+1SzzH4Bpa zp1RKhASWj)WG(ZOX@0Dl-`SK~JO46|fg)yjk3iT~29=#WG1Z(;ze($v+LMltDKg^2 zThCW4OXCU5Js8M?7JF$|~>n3pV$2X3FnY}!@P6BJC1Hfm;ocx>Q z9zJDMf>qclT~*#D5;k#Nz2>fXRg@Tvbzj4)z_HB6sVXG1LB{p!^l>aVmJIM}sw^;< zm{i9{wv!LWTH9gWUM^G|ejd$VnF-$)B?U>Q_LVRGmTe@>5p0fLk7z$290l{t{@A!4 z@78s`T2>J49X~flePArJalP2CX@-z{8=ujOj?%`a%kExOc_Fry6;p9fVz(Tt3YmO~ zZOns=zYEePlW#gEqH_m#b|D4}zOYhsl$m03p%b(Q$N1wafX*4y{T*a;%agEg6cIm? z561Oy!4ivm{VW?*V@-xs&-L~vGW-vny8}J`4AtJXT)q@+fv9Bw-tMO*!jwXm{2P?r z{-6j-$z70%yIx?cx>qz-5v7l?03REyzEZKP^p42g}fh?8QCb?5Zf={B`Hn zo)bkH9ES6Z`UR-O35k5Sl=K}c23Xca`4ClWVXf{9iY?BN?%R0(AVFL9a?|TTE-uXn zS-19~6+&x45lq`nrTE+Hg+o9=qA)$1v2f7lH1^9%m&E)Y7ARqx|EVE_Hw_;$HBp%m zEfeIY?u1&b4{hjVLwtTe7W6-O}uT)@<7;TlVKsDSv73Kdbia+q+6XfiGdUMev*CO2OOAC z!A1Ur&XPT6CB-N+G2`j|R~DRP*v2FFQIWt4uwK=Yk+XgiDTXhyx!*@^27&(^+T;rK z@QhR{x*Ws!UO4pu#XX?bx$q`~3T3co5U615(pE&eom!1}eDB1YykYrM?Z4b7q$=@}~k30v=nRtIRXk z7{jAhEvx;i6%Z*Io!!aLY!`7&!XhMUlUs9UyPKMnJ-NQJMLH(!u@-tl9e25c8<*&7 zGtMfE&LOmYP>`%FpDW;_{Hbuq^B1FG=AS=-flW?NM-bSNJv2+cv7(BL_2lecE_gmP zl?8VX*%SomBb3Do#8ts1j$&lJ;hy1s8@ad)d7tZfUcr1Kw%=!Ah>KO&)xzJ#%cZ%_ zFU}D|xvtXc(uiXyL6OkWdK~>oIvk##lFJ~L8a=3AK|(*J^Pn{FZ|P+SlQ2U{0d~gz zbzd6xQOU0m#uGmjGWsa_PGs)1y^P4tKEt#+K1XQ_mORQ_q^+IuCP$buLqz?vC2)Ef z3ZOAwNwsu8f2;eT8CrmwDed&1lgY!~Ud71sT;x z+FR&Y|Gn|suX4FrVErz^E?x|E=tNPuRH9#Qo~h=?tt~b64WC+V9Iu~eP8_g2z&xj| zM#+rwoa(T1HDI+@{*vNtZG2+EyJ`P;c_>@+-8wMyw~hf<5KnJte%5In--%oWgk){b zuPD02E(Cg$ZRUfAG<))g{O_b<+r)4nn6Eia*E@{RMT!d+@a^$t13#RjwFj-r^Xcqx4o`=N*Q4il4pvf-v4OkyF z9`LMjMo*)3HRZ`h?@HLwF3pYcuwVQH>kPQjwF$>=-ZcSKO5a~nlUk(8NAaYJ!ejTl z>!B~hXcSa;!3#ToC}S4Bb*0LnxP|hNn!5er94_@s-BzV+itOAPP;G(F!l}^LlAP}t z^WNBOwSwgyp#yHpG4BuqyY7xeY>U9OzM`snhQYeLv4WtB4iwK1Ub3*ZDni!veoZ9+ z4);<&CZ3S9$8W5N(kP$F*@eX)wV0Qpq%J`>P#^LoUhO&M2X=BsEN5fIzs84)kn5>KQM*7MKLP zL2{!Zv&ns&N10@9wHL~+Tq|hW<9!garbxEf8stf~4;?Uqa@1u(|&dCX^fn<74F z=ABAe6#aI2sWtiG{$Wo9wMvQ*Eco9twP%sl2aa3_$3Yw6RerZ<&Qzg322iZ4Q1+>H z9u_fqbcKPJF0C4GvAJ;Kb6O8H&##^PC*3F?x090U);&>;X(5Zm|4v#jJcV(r3h9JNNwmV0tP zk8PyFhb8x@EIoxU+3w3DLpLe~$z`Nn1u`N3Q}^mTy;YoS^_#EYVMdIS4oglAj)7g1 zRJTIPt@A_Epn0>UwkD%SYV)%F&3xABE3RBT3PW_D-;z+1_YQ9|1psAvYzj}bB%9!* zyDpCV^o}B;@1O$P9pvuAdl&Xwm?7EO`lUA$7Y7~ktz|c5s_H${9ePl+^C4RwK`mak zqVm(=!h3*K8!~92rB=q4UTA0#F7AMS6%0^0u}3T@JFW0&XGENA-D=@1>$d0nN%WTM zX-($lR@ss{^m^O7!tm~wrkc7_E&F+go$@hmNq|@b zYPq)&EKIMp+z|BEZRn>&jr9nddnFkshyr*iU$2kg&YMS4xg-5r0N==cMng7|hbYo3 z{;R1u;_F}fZjGWumL4KWW9TP|^r?MSgrWToJwZWxoV#7|)CmN&%|`HBxY8gKuxOFv z6X^gee~;Ak={MLQJ@+#Ik_aswr_2 z%#er@e5I$FGgy=E!sUnaBQ~aBvmLmX2yC!(bdPBHCk}5wE(@KsAuss|{%6E5LDC-W zfH732nCH1T{4Izrx|04SNsT-97Ub@QffxuG(gI=T`DB+KOWOExJ=Ls1UI9Q>-Uf)v zh!UVUsNyZU{iNpD&B~88 z6Cu+Y8ECcEGbC)Jt_;wpHB~W5niBk|S~QQ+rBS+*(B!e~Hm?b_Io3_0LDd_OOB?f` zbV|@kECuL**I@n9TSmO$ue8`hl~K^;8I!GnvRz&~o0Y_g6+b9W(1G#*{g&HrW+N^Q zp6h9tE0g=b+78rn2q~aTBq{UjgUsKb2Cw%m&FLSYE#)r$`_S7=-6aDcis2$QZSX?D zr!I@I3b?k-Yu~+G?75lE>I9$rDZ`-x>maR-WYwf)-&9u|vqs z<2D-U%RO0o<=2MF=dWVB{J^gfOFgG}(*Obr2`y(lR;Ca?8+&{TJeEEgwqzEucb|iR zrT}u3XMg=Q-_yHgARJW5dJqnk0nKmg%dXzX2b40rLG1&U2cw~(`o|CI+ufSPnFVpI zn8>84Wcdf$Dx3CC^$2_C%m2`Qqi4gy6j*ACGU0)2H_FL|1}E<>!w}B%M}H^=AgsKS z?xSTmU|SM-Nyt<8q`uINjf;_G2)Z><4hvwqT3f`dpxxz-kP1EZ_lYL0qE2P9*2bb+ zvTnfXzm$Qr_zhd^lv_<8xFr2GG639;o$|N2pO+)P%%8kXAzaNLp3)k${q^$J!R)`u zu3ZX*FS-brnSThRFK{1Kxte0A253M%|5tR4H@Md4*05socHpVVOm~-sb*?n%G6dm$ z?YGN(Uc@_2#uSR+`x|*}%J1giZ4Zi(!x-R^7+M)h%IR6yS*TqWLk+hI%l}pcghzwP z7fIDTyLFhE3({8(6@n3YwNjp~NoG9Z%Ohlp{Ir z@UN47CzhmuYkC=RFDAD9*QtYx@DKDKwr`LUfNI=gh!#<0Xld$+Ty6ttOGj^ADmUTH zI6^>|r+G%3En^8Dox+Z1tW$HC$v_o&;x$rY1A+#H$uvaqY?;j30v*#(Vwy1LMr#iS zc$3)9#^Z-7t;04SBQVm0Uurg{;M{R22)ashjq?ntuo?+r+AAq-p;d}{1B=pNHd4+3 zJu#!54mZ2YJ?t83>jl`GrdqbOH-V)4uYmgE3WT`13wB>hKl;Lxzb>fYnYf_gm!fr-5W*EeF@d8eIb9-3P{tW7J-||-;ue#YDyp5{z|FxH% z8V~TV-kQz+%%~G7Tb;~yaUtR3eryHMa)0{w*ak3}p2ZN=3uO9)Zq?bdXWDru-Fa$+ zFZ=s1RF+2o=+4*oy00;=;)?PS&EZ;HzX;_-d=X94i8D@nyW~wqgq7NNb?;qC)ag+o zzoya+#1N=1)_q<*UpEEb@@8_JsVl+ng)i4j#>|uNhn`ybU~U6s&lL)8(nVBgp|(E3 zqw9t?jm+Lz=h<=@O=Se#w7;(wuwd^+=}-}2(nBsFKm3Ehfu8H1Zx?T{i!iFOM6mPk zs73vcsvo8^X3rEtTB(H516M+q5)^}tj1LI4725} zZKh#aylM|U%7@R?NhI>&9FTPa7b2Ri-mA2oNOr?X)FQR}j;o-YyAd+AF{ zr{rcr=o&!(0P0$dHB9q!mTH*T(Ka%N4>=;95M-C57-0hV+z14A5$#%aW1H108Nbmt z6#Ge0of(f3OT5VmV6SEb$lcXq&6#7OW75Z)Mwl;7u9l5W8E3#KkSm*>71r^ZBP~v~ z7a9`vqudySBb(3*a;QzSf8b(&Etw#m*eRRPj#)+)peHZ8F!jf>>Q#arrKR(HBo}nJ z{9Ik_CoYv9N`dd0i6fTxF6>|ZhbzYU9&aRj*SR5NfhH-8<>v|JfpTc~cYyonCN>y?Fomor8MWJ)ytlq2e`}x&2Js6%C(r?d>}~F$z+WvY z+r^t@X_W@|KgEMAQHC|mpbz{z*8$t6ZuGvBgtaA4y!~BnI{#t$48+*=a(Ur?jtj0H znHff^N-pZSs*aA-(KHVe{_{T4?V@zWQsD1x&DXLM3XQKOnp>sca^yUq2?Y*hxPC%n#68;(xo*3~2-nJ6brKA`rnVk2d$had8{ecjnk1J`qP4Uc}1IEpSMz{Eou^ zw5M`(JYMt$mzBpjGTXf#dggPdo$*QMU--KoM0uOllnF+2rYVcf+O~$x*9^^H>=_j? znEhu*MYK-D+q7cLuO{g1i2De$>Wdq{Tq=CWV6_-EAWXsL_|i0)AN+E%%#(#$Bj{_a zifKJ6(%&Wtwj6aq$z~4(w4Q3i+zIdg%c5#$NL3hRX zOHR?9LKxaT=a%9X-(81bmtYPzbMDI<{2?+trfomnV$oI2>1sy~H!7PHWfc*I`qweb zw%w>wbY*XyrEXO8Yk;I-NmTK6^r59EC=5Fjz89tZCAU!AdW#MmU`)=_rr1WWu~gHY zQ~7s_TZe|s#G-Thzi`hFMG3x^)kug}5^G!yvZ_0YUnBsRJT7pLit>=E3oz#{RZ*8| z690BUm=<*1y&|L$nfym!h@43s{Yqwkd`vl-#gigdSRC}B10z~u57THT0na;Ims_wR zlkL^U8nkfYR0tX_(KMLP{VyZ8SJLzp#>#sfLFfwrnDjr3oJ3sh45Ukbm*FG~5>Xdi0^P`H-St?) zc%xgs51*Z${tq(Ghle3X#28{voPUFjGW6dOLSPBh(``DC`$cW;I=ue22BZ> z_SH(nj?{7#bYh@;w@9#qGphG6OREeFyd|}K7!eiKIj*-4X#V|WPT^f!iRfSXX%!!k zQBW}2k1{R)K$$%2kQfbxJDTIHm=>RGP5l2NXx$kzmaC849uXJ4Mxosz zO_LP?BhP>6N}gS5X{{Jq!|?wU9Zqr6nImAum@|8h5|%zR zs+B};x5wDng-3o3KGMyotJ^9#@DA&9Lt2{Smb%w)B@=BpU^dOxrZI{w(kBK*A(eX1 zz9BD6KRa~{Xc&qRY#Xb~(GLMOOf%B2W!!NC*yd{*FVUO{rn zK#X;7TT^M4DdY2*YCIU%7Yx=1xsli;T4MJ}&?Y#6f!b5_r(E4BK$mxCnjO~u0eEj-{}x;N<-g^fp#5*9 zmtPr?D=#<->xcuwo_rA`iQ_ENBt_w3+}W4j+R_4~6SQ*?$NW%;R}GAh=9K~J2?9Pp zVD2nw2n<~Rsp|6KJ9I(sa-#IG^YNHY%fcm9w+;UPsh}wcb!Rs$Vb4p0vugSbLc_Wp zumeWT^4DIcQW=@NTPWTKxnHQJFdDtb)p4!)TpSkp9CwnztX!hfVyU-8hc$RK`+QJz z>v143#);b6=whX}-xjQ0>VV~TII?DH2Q#uB$g7&JA_XV^Ath4iLi)z2W76<0Xl^e~; zv}=aa~dY%{AEaS=G3QYx3uJ-vl@Qit3e>zu9taTwX* zqNiMP`R2;ZrpakPtn{50eWj%?9k^@AidCaOaw*tss%Ux*>IbEiCn`vEpN0pm4g^f_ zhMQtaTdQgYlKphU@(&ezo)W(+T8@)Ok)=mdhaacOIs7Ht`+So81aIQ!B4w`Mm|s|( zd0ipl5bm^uqK5BT>-!KmJ}lVi7PNZ79<$_%8N=nn+cgk%qh3Bj`yV=AK z@Wo<#E6rI?@a${~l`+!HK1?|r$As?l3s9)AwiOv@pgNf={+nW1nSMudWJOnkG@w~S zQm%=aHOL`wglgRDtJ=h2UiSYVK}RLvMX4wD8*X8?hW^ww2N(UnnutIJXPOV1wOQxi zDb-WzZku*Gr>?+i#+%kzI?vT_79n!58#u(`pV}^)O2>xr+ zmtZm0Oeo4gKOU-F4NagshdtUr?(gy#-o{}Jy?wBqzZn9l=csqFo}7Fb_)Aa?=&ywx zd=cZ_Q7`j)mR-umS{D7_vMsk;*Qx;b&|;4FOnZ>dIzcFwlnbYi_@FI5iZC8+{Qvmw z&S#x?K*I=mbovvMnGcBNvZ>=A)jIa|!(%61;nHn0<)ALG-7(=ulbUqz9CSxkzt2E? z+P?~ECLt$4c&~i36Jz<+MtNm7H>!m96LXgY+uV8VsOg^00YL-Fuk!@tP4V zYFib2X@M08TC)@-0#SkdP(`Qcf^Y=Dq;?xTZUJXmrAND|pF`|6lerZ;FnPkj1K|{w zMX(tB2t~%h$*_ldrxg7yFt_Di_~)a=j-4d<`}ho?k@bfWN|`vIdgXloiz?)^*PzB58ISLykNaM&>sU z9<54cw!p$sj<(j81uL9imRg~2&?3yQ8%}ryb;1q%G^_27QB;IItQ>10j76b#P#(@n z5lxHuw-&XsGF<&b~^TCcgM=j zXahz50ipvRo|_1~6K3^m^>yle5{wWgh+Lao{e)?WxQmvm+!yysd`t8-hA#1QzI8jT z>Go4xQgT~r7WEsbM~C~BO5oX`vFHN+#* zpdo!x<{##Sn3!1Tb2dM0Wy@(LRUg*#7QOjI0jz*hL8r>{Ul<&E>v9_RYuVT8usI_qPan8OUSY8Cm*jOc1v?zA%)q@WJ|8MwI$MKPi%DbGRjK?^zD4 z?me8C@yf@hlJ4`d{BG>u2V+_;mzQ6(;{TeWCHQlD7it!&2?J+;r_e?-499q=t@8QQ zL^>-)@K7)y`G^+GvT&hVH@6IPM>~-Jt`_H3JfL_Z z%4s7Y`Iuj1T1C|vndxTSZX)|=f-)!m!u4W`gunDq+fN$u86(_UxM!I$8*{3QF=`#6 zG7_)#)tMh&&>Q{%DeGJkD4KV@I#FuoqJU4b(Y~~D7iy|oa{8Z9%p-j=8TWj`X%oJD zPwqYNf(x&cAw^^zs9fA&1gUF92n)n?O4F6JYb=6-sBVVkEAljZ=nI~J4DtKr4){G2 z`sZQQ3XlVV-5lsv-eY+ge>6AnrizRt_%XdhXP^xplZ9{hyEJaY&TKv>0E7vxYc@|4 zL-T$jKh)%7+H4dw1|?UB7)u2boi;^WVLHrIY&Ws&aJ@kPPv#^QU^&fM3MN$Lk&GD3 zJ8qDA_8`0J?Aw=OjFEfzvIP;gvcEH9xcZ@V&b}HV+$$SPmOAA z5@QzmSjS&~RJLVZ*F!j_q$K=MM8jt3Kuu&PV-X+Pa(&XIi^yX3RL*eAp!iFiWie<( zu(up}Aq^wnPnOpQz+zxZ#&JH|#V=R`AMb6CqFP8OUDfCS=M^PV_c%HqZSwr$>|aZ~ zj2AI?Za!6e>gGUU_W?U8Q(1iujE&d_@kq{qCuWHNK*oe&6_y|!)Cze7ofI-RZk$=g zxC9y%#J)#dhDr;0aMRx^?RaEjh$d_+T@D)H-|N^xgeXwEUiCN+PXCf*@zsvt;p|8* zmx)jk;!*%(%FF-$a2)~{i2nI&!Wvq!w3l}ZSALtnBO;QI%?aRDzSP#1!8rQcpQDpp zM*BKu2k{+~VFKU}QwJV5xaOcF)PcfCrYi3$ZX5M;0SoA|0>~J3kFd>k;uATL9~_tN zLp~CjRGm%A3|z2_io3O9#r(XZi1dwwC~J1Ql9oi5uEis4^H5&7KY}= zg#HM;n3L8#bRU)Vc!eJ}I=tJLr%@R|-~GG@Qo|Gu)x ze^eef;POGL^i8e_`y7JxO!oA6I+c$oj813t8Qed2i|tB%dG0`BBy(0GvojQGCp#?n z{r>J>ixJT_8d3uPnu=}qzyt_~W!UG&HAc@X5O$HYcb0C|**_4LO055TrJSK`F!sAEBr&)45I-lOTj`|Io zoI2&vKrrVy85PFTM5SEFZFIB^oU{WCJ;6N=4*C}Yq#?IT{ji<+<9Z9A>ow( z#x$c8{>QjDcfE#264^h>P@yR~Yp}*(dkmiUyDqsrb40^gENrkS`W_IK)D-m3G;XX) zHaCi8$1PblRrnSMk46w`2st3F;^SlZF-+wE5Y`m=JoC{$h9b_B;31cw;@lCVnJ+gd zfk@Viv%1%3E_z~}4rHLn;hKNpl!D1v6~`5jduI2uy zuz3;v41_S;D7?M~i`oF7GJ?o&(#uH<75Ci*UgNnebmtZ1-pQX7F)Xvx@)tlz8ehv6 zhEhXdfOT3$pC5s|-V>vHOd<_S^(5*W7E#9hIWq(Nwh_Igyv%u3;n6aI+0zynJ2r@Z z=fk5>&FXLqi0bKo_J8oI0sfpM{5?JElXQIWYPKyx`NOc~Ts+oVMw7QWi1VODP4Rgb zdzv#cWDgtKg>dP2o;0Q(1@^S+ZR+LC&m6*#x^>%Lvy(1ia1kv}D^fZgrri|a+gYMD zZ>zblo*v_=@=^;6#~ziMrzBr4$DKI!|l zhA^j1NinI)7>PU7IijX>e|)C)@)roh>?svaS`Xuz!(|$J1*>k>9PXd`21B~{{m|;Y z*={~AX4^rHjfK3*S|phywp>(L=$tBx$VygI3!vTJ;|m}lpMyhgs0jnW)A*O}9J28j zjL6V$?{dxNw=a{O^(05%z(gHs>(LM@jB{!}w!u)MX~N8o`Gi2A)HnS zjpwn?5s;mAv$0*mVK%bz-itPt{Qx~c!oS3{*r+))-CFvU!42>kI}#a|wp*3`H-h5w z^DSAp@2asKPCQqLV`NyN3~D;VWf?GBVUj?Tld3>!V4+piT*q*(Qr^W1Y+4Ksb7e8x z_@O)43$>qhR{uVtm-8zrZh@pr_zP;g*Cf{EvL!ugNK*b%wX^XLBqleOp%~ml+DzwV zv+fC9*{lu)mNC|`W%p8V3FhBrWNzf^=0yT@8jf9d9l;%;;UGcyjBYxp{baA!dJ||0 zh8Lm55#<3S@Ko{IL|QF7Nrbd&^UYEr{FlDBt0N%Ax`$M zZ70AC}`wRH}PObUQ*FJ{Zf!lQ{i8NV^k3{_3VV(wQlTw+Dv+|O?Hj` zs4AD{@~5Qm4wBKKFdZJ|TTe0wdH35%G0Z80p}aHB9W=c3{saRC{qZ~Kalyzi{8boZ zK)L&M6C5d5L>d?qQz#Tf-v-x_t`n;G32?zUwTZeModc&QXThWHj%AX}4fD0<3b~c*3iy)Okk{olW$j{ zHTfUYZ-^pS4go!+IyJDSzom*dyh}2HJa5b%YisoSybIZqwBmlPLMo({4CY8u;kURn z+d9epF)-HHZa_GwczFs6JqJb=h?E{3 zbRDEj#sqRu2ndQE&Ffs~owhB0#cU%#|2j^&E{^>smWC+xG(c4_wiicI;6Bx?YnEd+ z7PLkVNU0LTUuwY;t`YIww+Wz~nC`9ejjXebFqZ zq>gL7q#OLxqjuQx&nV5^<)q}oIDB*IzlK`dtik@rry7(Z2<&iX4tVLoBu=@fMB$o{ zx_rqXaQ;K_o}dy-(o8%&B_lyRkk04lLeS3jR?=$1KVHUdD;o9Wef|fn zoVj)e8peOmd3$e$5ReL9K~pX*zsYj-0EfX(V;9vQ&}<)SeIhrQ$} zruK&pnL7=5@ry^-!c43BNL;71hDy3*@JUCZ{nqme=H-+3j#BrPLt5;6T@VruJ(@}@ z1+aJP1SuSZEUDGzHAm+xq@idiKnC?=vTHP0Yr8=Td2}^5W-2I^_6HV$z!(5N4|}el zF|6Qa<8mJu(zrO>!Y;zmV<>POZ9|I*Fhr5wvGQ3mudfOICt`!E^3QGnq}$trHmCj% zb-bGm2HSI}g-)9CjoIU!&?H%Ba{gJd>6%KFXLy}&p+C4UWrQ-m6wci4ml?y{)7O^0 zT7A%np8=xvVI7S)r?l@bhak?7A2*x0F|z`=qW)i#6Ua@iq5c6i>wyu1z4{Pxign74 zFSV61JcCUwub0^e=veC{k)U(hSQIRLMKpw9vy76X+s|>umY+5lGl-Z6Bgh;tV88;v zz;zaD(;;~Lc-_P8#Wu)|OkyK#B>kK1QRwodVqchu=8*Dh% z0+4H?q%udNWdt)!)8FOdh#=T0xRLYP2!W;}-O^ZrGEy8vFdj>&Hue^l+ulQ2`iFIl zUDfOLp2YYL6ISM4Jh7CALyUvGY*NO8D1#MSh%zqLHb}aDIQY6G&xZByuBfEo2}Prj z1!6WpE9^%kN-AN4S6h@@^R2rpUgdJ@sL0B&b7oqTw^#BlU?=S6wH_TMmDOxfHy>Wc%@tue4Q>nm&%}F`Um0;xhbz_@Iex zYfEVhmlJbbt>;!~KT9BhFz7zhDbgGL^f`;Xs3~t|ypLm%z@MxOnNsY;obDM6wpInx zOOZ0uIxQo`=K)P?bia}%wFU)GU%J+FYxvg*lcpT`UcmV|Ps$lW(n`4hGKQ`%kn+JG zAwM55{qICzZ1+-lGVXw%5=7JZ=&BJ2gsWy_nh$X6b)z&{&wO0OkFC_QMr=KmQ3s9_ zge$)Ss**oJI{v2{}?lba_nzb+-u=g6Ep_+>CT%Y}Ft7 z0C8;jU^=`k8d@kS71oV!J`2iJcYiTJ(@ab@-b?3TP5q=SyXBVX6n)4l8D{A*+MvRT zkBtPSvOaIa9Np3QI3+{%j&Aepg33z7?w$GZFKn!3FtrrE4pe1@tX5GmE8(l)xBvV( zxX!v%&mX(RC&{bQnr+muOGl4lIAb}{{qH9+%XXblJpI~t^-8IeUUY2<3YxP5P)lxH2l@e=+Z=%>#@PSx zO3&aUng+**ClEYmYP_)8{3en`A8{Yxw5E2@SPc^zs7b`-(!FcU>MmJ;cWC#ia-tyU zn(Fv7e+JrR+@y?b>Z0a7XRxV)?A+#h3n>Oje157t0+#usn~;6!!)WrL$xMW`$I9eW z07R}@V;niLm16vd`CK3Fq?f5e@0G+RXUR|@{vG9P99@33Wx!i$VwD-SLJ@^+T|`w- zP%ODxHOHPP-5%y&BDU9`AX7U{{WHJ>TMvkQ%lCo-CFl%aiK>tE%(tNX++GpfQBCibDRdJ?4tD( z$PN=`b9;j#0wbCT@^H`?P?Xy+?g$^me8qclh(JYzKokg8*hjV~?z~sktIEweR@aO{&8sdXe)qbI6NmR|^3U#-;Y#@#to}Q~ z^z2)gpzSoQ2Ql&u>G6k({ zB^^oSd%#NOw7+$`JD3*Z zvWi)U5v`f@@Ld=SBVw*SLNM$G#Uj9i_Jw2tZoK`}i0(dOySY3%*T3ma{1{~mhJxH~ z=Dw3IE@xVgO!a`7L|hg>y2TfNJ>7N8UfnT+<1B8p`>r)B-e?XyMsLz19{+>@dii>o zW|F%*coR9SQN55!nRY!H(FVj4mp<1*&*nYegfydU* zDf-ejvG1d^MD+%aj!*}$ha=LTu$N3`6zAdHU=3mgX%^Zg)j(O4Nb-37Q1ZvcqnDEW z2g!>W>jQ^fhIJJQ-)Z}Npi)djMf`V?4-ywduW)km;m0#Y!BA?UvS@I|4SSi9yeNz* zq$`f+kI0$~=(Qku{7!!f4!5lDPtPPVuxSIV7yoTUD+?A-1P_ECw#fnX+it&hA0Ud@ z3>3|e3XO)Gy#N-*RJ5GLR}OXvw#~w`{m}OF_WoBu+bz)MITNOOq@M#j`aIAh+NRax zdDMr+_HumQrYqleSa!ti*(Rkrv2kO?(5juPVF>iFgr)K>xDc-HZXVur%eUgodznFq z;1P<(i0103sS^|86il;JAtXluz2-mwqfrfTR$&rk_S~qM8ZZtE#%8a(tCxx3^)B02 zizjQLXH8oh+^qed3y$)&hYKRyM&Tw!Q^=S;zi%1Q!h10TUd(ox|xkfbJ zh5!qMOD^53VSWQ;*zY3#+Q^zVjz**dv_m+l*N0P)MFL`U#KS>X#D@60HZ-9*Cd08c z#ko@knpl_V-qtmPh_h^q&%z`s+?yr?pKSDzpVbyuziHR-kNAQOFeQRWc8^%Uy=B6G ze?471zy^#I^R`~0tq9tMY)uuZUVJ3xznF2lA|%Eb_0Gx#sdHEQubEH*4t&znU)m;i zCd2~kUd(Gz?5_d5v-SKs4%JHEnQPb7S5d|~D3-&KHG|#+&)0))1~M5Sk*JwDe&%N3 zJ>1|F>=k-&;0_Rm8W+i3bS#8V7DdQlS%^=C)!VlaKM|=w_pHWcE>X=q=;(Zd%)do;iL+8O~Wx8;uPoP zxrhIHG3zlKAB&~ky!vKx{}D(fSyv|P#`mta;cn+9P}UKIvYOG(R6F>L#@57TwnYzq z%%9W`n*Pv$dPbOwZ(_OKmn0QU5uSPg@o?*^S2L}Kz=2PaLvNk7_PlCM6Vy*L%?Bpl zV7)c{5>|wbl|ip`gyiR`vHgh8=l=!#AZZ$71_G((Zc#5{2n=cn@P^D{rboVoKZtzJ z5Fd*gw9F5`bZio?G}4MJ@;z@iLG|iVc$kdykn}fLEAK3QvmEvXidPxJDVH@O_bj_q znB;MfMCij`OjVoF`}@b&0^id6O$z2S6AYTEkOc+Iy-6WGp^#1o&gb}JB?#VDlTmbr z5PKs-P3PJQP0sCCQkm1}&c{ZlMBb)Lp!h4epL-+(BmY}!%n^}tFe*P21^7f@646(| z&x_83CtI!~2qIM(#Yat~Q)rZx0PJ>Al(<&jm$sLOOo-(6xQ9I=s=(z@u)++PF&c9P z4M~V=PQV;sRr{7A|a{>E1Xb+NFlWJ=s5 z)r22aN&NgFy=@`lmAYUHU$`@bnc)+HP#rWxWmd^_Ae*+%fi{6B9EKUEqR#+m{0{bP zT-mo0OJXOs#MgZS1bX+n@u{Z~63Ul(t~4rVSq&}!%=w{o-Mh_%807{z#H)FpZ9t}x zJr{+tuZH@kNz?HTJ4At#lGN!pr2tK~ZWQZef)k*LsDlr%h7NI8tTh~P%^~^%uBvIGvv}d1 z7(-WM!}6Jys<7BT_r_Um3yaWP{^FF!%ToK_Q-^UXI2Oua#YTY+m|;p8o8Au*=iX61 z!N)hO7zbM~OWmPhs2)S+xu|k5AdoS@o)vO&9`4>X`{aL9YD`8DswLgu4FbIJecVP2`=A5&b|Us zLb&L1acD7W0;2A@YDpvxwiAam&5qJkKTCd~w0I~)WG?w5DKm5DU_qBJ_=p@*TwL7t z?IzByCs^-`C=-FtPS2X+-HtWgXF=pBWBQ$ayXCNSM%>4BJ0?g+jjedq%cj%FI%9b zJ0{bbcgy-t4~wp@aoy|eIny}&gqUyJ7e4q{+|0~+B4q4M_`>JrtTWI`rViLrbkR+h zh?)8-=o8dst>Hi|ib3G68NV)Xu_;EwU&iJ}miETLdUYRK1gicr3tVExbQ5Xef%T?S zWp!M1b&1rkb!J?E2vg}t6jVyw5|SxcZe0N9wS94Iw+U1;DaGy_J$C6c!nL*>iLIW= zlG$(X5+h(J^V;qYT$>ZV=$p9sK{lZ-)9$=mzWU6b-3y*!Ox3%25tGPi$3Njk>dMEm zjUOmTdGGjpTiqaCmmw{yf&bR=yW9u?U#(?mGf36o`*Jx9oOu3vM|C^PAb+bb)wBHy&oIUMy&3lqjWN!Bk-CJ%LDX(y%C0Wql=vhY6Dznqj8K%fD!s;h4#2Km(- z*o4}mKw}veI=jbOFXq(#-3BMa88u0z{tEw*`cdKu?Lbl$Qhp5$2&rx{b>5|a!lin* z^a`f)8It%tNWXZlHHEY;8t>uE#{1BAnI$HPggKk@C~>)k=0Ebdh$n#o>U$7TCJ53w zUksz9fh|oa+UY2EF7%3ZGBrF727f^oH}sh@st;L?704wc)7g2`_7VlzS1EHRvea6D z_VB3BALl~8ylweO7hkoFLWm+I)b^XzRH$Tvm+VAJGImX$mgvg55jt@^gJEeybgzdr z!*O-UM#O^qrJjvX-u*YB(69Ge#|j58ctWAuW<)M>)EUaQi{izve4l+MJ3U({r`y+wU_DSIo?i$@7E(A;wxqIreh&B}Po-EPqgxybbC zv9f5!nOS=MB%=)Jd{w0p1e<}cluCeuOT$Rt7&hO68%n7^;m65L zl12NLV!pHDWnOT{ovlS2jw;$Gwh(0oex|1CgIdmOo$8(_M3-h~1{bu~pjUoMnGpE0w7*N^EqcLBm9?N=ky$Vel+ z{_3rwJK{z^-JMK=Db~SjjSltqrN?WZZ+&4IUV*kW)J_Z(csX=px-)W?xoC$<{kg#n z(rJ#widoa53@R+H7KaC1U#|=*rSv1WirNAF{FL`Z?t;J_kPqNe6);MAgYr28l)zMp zZe>T}lbPs!fu&W>4ej(i80dFSrPgcZQ8eD4N?v;K2tmSNib#{F8(i>(y*Bb0I8+>J zlb_7DvxSstj|4tI5t~}>so%&0ivFWHO@Wt&RkY3=K^RUu-9YtnoI6m&m4s|xiZinW zRgS70=Rfk!rRh8e?_+1TQm0q|S#`uwqB84;hh5#&P3LicrWdN_c7T4XtkW|1amRwYCY9|KHdy!sloUi#5a=+{@zq|Y=u^vpwG$8Vsdtv*9B-UlU2I=A=(YTh?>K0R7!=U zOM>%JI_63-2)!y%te|5H9yY{ZP^!PiaJsth`{|9isyVKTYb|@LdK2@#uoSjPimAWX zaD(dXB zL}eU%spMlAaSS%UgwCr*YP#pDN%fPW2>Q{7{(R%>Xv%RK+HDZ?*Eu^9;O;8H?t%d^ zND#3N>)7K|t3fwLpiGU?%5DDe%$9G88CsA{z}r)vt+!K=C-P6XA8oi_wyllXFbry z1IsA!t)P*E^9Esm5lU*}56|KBJ==gdC$p#4MG{sYUA#888ezXo`^L(177mzDgW`7= z?eG1K=fImCLVu4jY(G;NtIGIjkc(LshD;@qWi_~2NTgmE02=t$Qz_2T2C7Isuh-z= z!yRA^GU`zlzLS?Wi=w+Sd>90*N{sdSo#fY9v6sO{KJTq$5Hi!)3oEmJVczM{C2@Wx zSwDrpRiFEfr_ttpwK1{g{}9O@$`Hd3@tAg5Rt;l32Ao3fA$Q#sB`zBcaFmyl0q`Q* zug5G7#sj`JnXL9RaPR`>{Lxgr!|tV(dV!cLk7i0T0qy-C>OqSXJ1j5Dgx9g~yW6if zMyCSHa*d2(;$6*B%zpaMJ&4NC3MqJxi3DaZBGtRLBs7q5LSC5Xj3C^`cYW@l|H&Vy z3DUsob=|t7n9QqDh0>aDRCS`I8}&jz7`UC9e(gq`1OV2+=11APXUS##UbFjFa-q8Q zGoW;*IxT)2XzpW%^R0@J%|j^bfO8S6aSyBu7JhX%6gz=GL2VGA!rwF8yJT)t7C$|Y zki|G`<@=3iJ4wV?vpAt-8*D;khdCtO8b&r4hv)aHVeT46*O%mQQj7G}UhP@GNndZM zB^!M?b7Q%-Lb=XGr18#R!gWZZlSG@%+P}HlEd|)n+D#1myExE~Q0Pux{G=-tL18tl;*qoAIa$QgR zHiwJ0@co&7d^x}BvP(VH3JAQxa}Zng^Wi^P-K)wg8OEULb?pWZIXtVEgg~I$sA1&T zKcV*|PGFs)A5YBbu~J_GTmeH7j2RA+)xZjbGn?$MSqmwGO!tuDY=l#QejnEJ=WY!# z&W-{x%e#S+PFrnJvSTu&f)&y1vDtMYBrMk}0&QVso{}Yv(or3T!)%uOzd)zb4FZq4 z(zGR2!j7Z|2pp2i*(gUkJOIj_lh!Ka!}D>d@LBW*2W$197!=zZr)7 zKkPk%PJujiRjBpP>VvMBVXcecTfw;`4@!X)c9ag+yO8MO`(^-}$x<;Tv9Plv>E#~o z@E=L32i}Fp6d507FPo=&Itbu>EY8$C2ey1-86oz1V#oyTT{-#I9(t`<4%ESFHQ9%= zg~rd4QgdVSg`|(WwF||Swp+VZUofBr>1S}tZ>l7wbcE(B@|J_1VOfgyRYgyhq3fgh z%JS6Mj%C$f>h>lJEPN#jY_=hHQnzP*7rhG{Nb4Ug*db$hi^ zL$JeJLtU2J`Gy^Gt(|D-;?E3)6wI!q!=sg;M;xvAH_h@Soyp$yIHfi0^qpo}av*^e z*^r%^azGOTaJ*?ZXI6%-at*{1UoqCa1MGFc1m+{${T$THWs?N#}iW|VK?PO^9ydyoB^zFtw zrwq4D>wOiXYYD%LjQm3mhK&`bgDr-qk_D+0cip=3jI2;PLfaN1qG?*MaxKuj12y z1Y9804xW#hPT+9M5&!xL)px49b5n^bGLDGeiJb9A^NmsBr>B0~od3Z;y-WD&CO1WZ z^-a|KpZ7LUSBARxf<9FoKc6?ZDkJ;1y@iovhs9)`$<$+T<-o%iA7VeXMh=i-o`t7S z=Q5h9QvET)as`t=+Q4BPuAIGIFOjK|;ATni)FMSKlk8TM^$A!_DxT_~Zx39syxhd_ z?}7O8nqJ%@fbQikNhVxa8D{*K`o@{vy__wrH>m4@kJc7Snh}BQj)MgVSBta3wM5_k z2Sz52Yeb(f6kpEnf6lnK0{|PLe)UGrAKu3|rRx$(JdM^y&dmL40VG)F#dBYtpWWL` zlW8KM;M`r0TGP0*7+Sx|!D20E#VzI9hX>5ees$-s1J<}+(&1tFUP4YH5O!T?-~3vOV2AneD~xC95v0q?nDA#+r+=@?p$w->2>}?pSkg zS26QWw>5A|)Z=j2-M&!U(}tY1SfLN1YGSo{c4%V=aypX5(r>66RhH_r%Tu_n4VN)i z`ZU~~04Hk+mFSS-yh_k|f@$;1JRe=_F0e>7YwDD(EKwB@Qg`MHCAbf>z+(1RvK+#fhKB zo!{l%49R*Zs}{Nh$b8l5U0iju3S$GMwB%BRl6uA)0S|2%wC=`P&dwfJ?RvQ7g`x$* ziM4_upB09pEM>mHaXq?j)WqC9BsmPyd!3aD`k0b9s;kGt2H%`))C1x3=*C5~1bdhZDTxJtz*HUG)MsBG^AuMlCUgC(>8;U!8nIgl7MP!Y>2nzl1wtfbD? zmai<%32j96y2U*0OSXy^Pe>v)hg#uCU*__DxpJ4><8H|#p3tvKOpZ8S0`=WC7 z8F8}FgG4Bnn+bcR0!C=zCy7c;Os$&lE zTVu4z(tPGDQglJYx*6x+&y5A6yo)^-wQ@Q+DF4)&+EE0sN~Ts+P~gNvKJjaF;X%90q$rmmF=hnnNqU@LNu1qu6g zG(^5?v~9!f?8>$cDzf~pDj(3@hlD~_p%0S9MoQJO9QM}J@x4{VQQ`e}F zRZDH>M3BsA={YkZ%V?<|TZw1P=ZQHn6k#VZg`6V!FMW=bqoySR^Od#InPoYBt1O1x z>#%@uU0MDxFw)TrB4R0{j-*=bE9HrmV+}QTs8Wqb$)h$*j-?4WrOM$VY=-c)o<1-k zzC0I>7;tS&h@c5+HP@cuH+Vh1FRFpjMj>zzo8xb4$;%QasEeLDlL%9Yl(y79j&a)+ z4(%pD9aqMnkC`wZQCm2r_zqgjHY4K3ya0aCICglb7OC)#K1Lip`r=qe6e{QE?8dXn zO2frrZG9@p3P*NLK8D-0L=@a1h-Ua`Rb<( zsQEZIC^MFhv_chK?fd?&m0y}S@SV8)h0+|b1kvfmc8dqLfL?AL(!6z0BW(H*TXB}j z-R*L5H8wtY(QkBdH;|sP#lPHE{z&@s&izo>bSf6l8 zAQeijkQ_raT5VR@{dTe0wYocsFl%Oh!r%1? zxH~3E{)F56Tx_JuU;gA5yOh*^Mb8l3!rLPGoYBh*{(5m9{sqs>is_A_>`2whX*lQG zETj@-xW-;T&Cv}1n%Of1VuDurYrZ1Xx5t$Ud-KCkv$&W*p(-$PG2A(KWm%N)1}1M# zq*T}uMkyoR2O!hQ18%F`SMp`93d9wvMEfl6iT;(o`wXSjEN$jQ_VL_F z$yo3n)2zg`&~S;O%WxR4K!2v4!8}4?f2ffewisE&8CQz0w~VIwPTxKsKpcQyFrR z7=;&GnRztYy)1o=tJ4Te0#XU#QOWYuv02;+=YD=eTU=tMhR(lq8(F=U{OV3aoPk=n z7#u~*y+30?4=dA+;L$!<9!ijH7{?C-Z^nVWokahC^XQukT1KbhJF%r8m`3PwP2FQ~H~MYY{De?G z)~dPZ$0&A>;O;*02tVdUT?yffB(fTMsv*ms zbNL|VBGvZ(xO9l_aJ}P>C3%4$WY%%I;qp@MB;!GI3H8r3bJ^U4hQu9FEzZN zj6&sEC~>sjPgErMchyXE`G*yt?o491*~m-*F8LmJpBdD8>r!m35Si!Ry6jIi!iN~*mCL-$Np)vGml6s?>4 zi0y1oW9(^>A9zHiL0&A4SCf@eB5*1X*CNCtQ_pQz+K!U*t57jDyw*-m{A`LdXW$@m zGM{H2-ury(vjzU?MVrR->lU3IUd$$^?TC9@yAUrhS5d@lK#M(=%~w>MpTQ(oLxPUtok5|FdB{gIQD^OdjZw6#;^9oZ_H(!IRpsiR3x6a+#iK4~L$dKJ1 z+1B&72~znQM94?LzB*T7{R>;Iow)$4XmP{pEY1zD5paW7f7U>{krM)22&nH*k1spW zd|yEXvA#*=k=+#Zdcb39=kjeHLW@CUDJk*0l7)V$v(m~4OR=!K8k&dEBh`&dsRBI|w(Mx-)ooIN%Z631_o(HK5gR&3JD#N-C zcfdWN;jM%H#E3k;h#;PiB`g}=Vt74g96zNg{h+i4(+T91@~lWAqm8ZW!8=l2$o$^t zJ=g_w#%aX+3v#rTon!)CnO{^Cxxp&a))cjveq+Z@A0%;D_D%^B+CpNV3Wk6k05kqx zP%G~0s?63oR{3}2jjBcx3U+p$_Zr9AXGKQ>@c#4X{XxPd~;_q*}h<(8{-MbdYA zJw(gx-M1BoQ%^}yu&FNL))JUWB`l~dYsZaz%s6IhNs_%X_wwd6%;vYJsJ}vQ#(X?l zhE7SC*MGY&fL2aRJggEdI~g$?YGlyu%0iO&<1ayVS{HY}AWc5&?4DH+GE?Y8!c>Ig_xSN`QQ+B_6d$sBhE%8Gv8+Ls1s$|| zZ$T>q?pV8(&Bc;#79+WZT9evr0W(C5(-P_cjEC(-yA49mpgFm!E$kd9eSiTq01FMd zH-|wIc$*aNIg1w zJSN13N=#-#;q+L<@XR~!`2QYd)IMrj6Gu@xxLuua2EpJ+dt`B^EzJln`%fQSi1*_L zgD8RF!1vDX~9&v3`A*GC4yEyJ@042hvoVT91H z74*xL?u$CKb%SeTyiB-JE!ecjKC~f@(W!I@Uxz}K#UO&tc5npp2rOjm3CY;LW_$QR zx+V!W{nVwK;d=qtmfqfpDDc)5+J#Bv1cAO0RliZr4p6OkDk1s}&B zd!|Eb)J%NHF+xvz^}~mr>SkNm1PgLolL&y=(^jL^71Y_#AcPZ)6-F<+fi9>7QtPDN z4Vd719LkobHTaRL*=@iYS5=si$=5OoPhy7N5G^GzG009NA`h@Zs_MF4xa$OTYk{OT%8;R9e11gWs%UMgb6P6kCLM5)f{3$yeT&v<2M|!s`GP<1DpKAQ1M~Y? zp9?gS%w7rO_qU(Eykpr{V-@xcvZL#&?g^pNL6SS$On;whGt&Udl0)jWa>0J!NX9!z zWFH>if8hZM5woNG3eBy!Ytd<6?742jnQ}{~^K9Za*u6doYqgwAIF=7q;d-L_Peqf6!ae2XP!=9iP-M0SWpCmr1qVgo=uD}F)BM1c~H92Hlt6CvZ=&L1Eq}n z>}l<50dW!oPifb$76t2Y=IE0Qs_Eal5^nFVauC1Vj|rTu9*MUrnu?3wvN1X7PN;^ifOgKM)7TS&{^ zwv2Q7X5Dm8VHIcH#%Po;9UVTw=4>byJQzetrZ*={s7zQ(S8q`Zs;TBhRAI*thz+9L zZ_B7dA9tHyF!djx(7BmG@D6j;4L)C%wVDxregmXTZ@T%Lz5_YGtX zp+lhtC}IhKh~8MjsRt;kQjLN4zhrd8L0uI{`{>=jzg+ij14nKVu0KL+aRDYYx@+>r z`~tn^f<+DV$R86MPU+^BN5_Bbke+Z$Hb%2h9@m z3<>RD+53xT2i%U`KX?XlR*J?hCy6h~d3~VI#$reDE6K3%W`u;qvWc4%Owq)_jK3>0 zIRmsJ5uFMd^&^13j2SEt2LJ`r@mnMO4J6BcShwf{Lmt)}6K=`4$L2SZi|zvuyCje9 z{9Cx!U6(jWH~#N-Zltbriw;nF{2*FtflIIcHYA#fSaKq5^aF;-y!Yr1r=Q=)18a|E zReQcDeW0KeLt!yROR*;CG2Pr4wZE83u!5@+@Az_)PLi>E$f{k4J@KG9yGFg61pMJfENIwD zqoo4*KknI5JEd9zN{nOB=8>Av5-r?kpaO!P8TPZhsUtg3Nyg!tHqQ0UHHn%Y3ZiHn zhg{2?WH;248m_r{T!Q#OfX24Mi}AIT(20sPa7mgBJzARq=%M0S7SM+HlQ7k(vkP2Q zuGa$`7vK$yY7&z~OaRhu+Mik%zaUGij!ujH9HUryzl4R{xdw3~=K{GZrc=B#q{+z) zU{qGYPwNv&r!+Re^WfohwlWb{yu81WwU3Mk6Q6e^1-D{X*ELl1A`ptsv4y{&sMptBLZizu z)nxr|K+m7Cce!X?JzFwxXL;twp8)<{wnh+v@fxpl{>%Sw^;|ZO#%=}EGzeP~yn8Q| zka&8iZL)%GW~|xF>2KRaGt;Y^WQa_=RtYy2yHG%&k)vD>BAKXiT8q`N!P>Q8UC9S7 zk<^2d+yaP#TPRT)5;hPJNH=0^Uh?q#+L&*9Vc{*x4$2-pYI}jp-V3x{;Ale(L@Ym= zypW`j>cKxqahvJ=xH9wTF0&rqyZK#wQYV-F+k#5)a()eX1{|m!&9Jc1R0FdXcYmqy ze-SmoW0-BD`tlDUxvnQm2H=sTPHG*s*U6T58V_!h49}SAR@Mx`31JKyrf`l}Ywd4Z z!h}B}mpCcaQ#+v3$}I1r3P0JqRJ#_^9CZ95QND_(zliz^Q?d6-BU z)p|Z9MG0f%$tUf&NYl4WvJYfJx>u$^tCVXCuFK7ty>#oH3YseddZgWAB_c^i3q+A4 z-4IpS9SJ=}2XAE7#yr5MVF#v2(&n!MYRz(>Mw3!Qk+*l`y&mHp*0C+{x#rOqK!>pn z?^yojSrf}?WmmX1LTwE{i&U$#&9!rV)!L=+BgpsE&Dqo+x3A=q8=&>|E!B?evZSOc zj~Yq^ll}^6^%6_1PC5GxH@ba|Q{Cvr)C3aLpIjqFex45_zr7)N{*T`nkC*AB;~;*s z+VOez?z&sY?;B5{&~Ym5d}U~V4lEQ~-9V{ju`Axi_)azm2Mq{W7L#~HQx%*XCP9R$ z95j1Cc|KoPv@M-?7E8Ifxh^bYCOKG+VKv@TcQp$%IhD79MtS`_Tk2%7ENN=%Jw{i# z22E*$C|B_BRdYAV?sW7PfopHCap5wefiW8y281o5%b{1=?z z)@O*mF-DVc>V=aF@&t20@H*;BIGt`JE0U(M!_@(5Jh)eK7@J5Ar25E{+|^%FVBIDU zKbnQr)CuZj?KP`3`G@>>v*&@GQ6kejQA-YOX0316G(YlEaI5Kf;mm>bmY&$@MQPufd;GKZT~W!M|U z(U!V}O7zeDK~RS4&dAG1rM8YiM)-Wn!ce&OEb;d>j^+uU&nt~ex~F7;%(6Vdww-6I zD!bVr@r^mh(`*-`YlaZ%!6||& zK4Po3T;U1YC}k<)Ae2T)Jd#_w=7_r6u&Hu_YxQVsnl_CXxJjuf7B6?2$)KR{g*q`G z>s0PV&Zm@kH{DA6(P8%`%R4yAYdeS#*NY)=mZeC6hwUHEh%m}29s?0_ivq3xLpoYu zqno#>CkON6RSAA+k~lFAehlT@I=~84gP}D^$p&vlx+KHKrId$JKFt}XMdNX29j4i5 z?Kn7a^_i+6E=kjUY!8gP3xsTKPUHkXrUY=}*OPu{Wv6}Pc@Wn)J45w%`U4X_2w&Ke zs~=H929+LcQl6oC#0QwR7Oid$&D^K@`1C>)jr472JsIf&5y+77(rWAb9iYVs7T@YdWply7i5n;Xj*At!g;&rm7 zv!l=PY+gc(YGPNVTo4#Ezd@wDz!r>BD>jdal%baRef8WS?@n4N@V_)~aZn~dB^dZ- z4ImCmAsaWovveL#i*FZfI!HFrDJCWV|E&4_!T494(@cl<3G zRL$WcgDF!X255n+zlR5=JJy``_wF`X5};mrsj&K=%6eZRahURK!_br@&Fza(Ny?$gh+)5w@5}QXEr4^dKdyy|6@ROvF`A(VrO(!-7}le^6GhAXs=@~% z)48t=;=|p-y%UHf;+msa)x<@JL*K@E>t8THLC9ni+jo4iwe5kX@h=Mn?8-~8s$*TJ z-bn^ZivwV#I`tV6h*v0I7Y(3hEyx8Di&zI;t0tIZd$avyD26VYz>^>~q~E#|JJwTL z2?a2_Jjm^t|9f?dpF{?L>|R-5oUCdM1@8(~z347)Mo(u{%@ExlxMyUgWi#X|? zf2SF|QVBoFV`esMZ;3&i9tADKF!-rN3*Y7j);)YFKwq??RB^Nr%>REL!TLStX1@{kPe8E0zmZ`TlQ&C- zZ{TVfWPr&B=*dGE4;8#{(apN8aFx~C)svtvU(w6ZLwhoCbh!1Ubg zDT>htO2+@}V9)VJNZLxAOjN*ZQAiXPW+(1OTUaMEJ*W1OX-L1?~M<*JH0+d4TMnHP#t`^HZQ@< z7z7@iL?(qLM||8AaSsWcc(VG}G*}VVjf6fiGdLT~W#j3!OX_mprfqm&DjrZvHfh%F z6ikDoMR|&Ue8HAJu5_2oAaT;fI>^%#J7JB_>adYFjyJV_LXRI|>;{p^W_9_bLm5Xi zcVNg!2w#0Q>M<%y8ZKZWhm_aHH@nO5-OA@D>Aif_%`L&J#d)tb;=Jsy;HVryjxRKM{NpXK!73nx7qj>1b!z6~PlE;!VxLMdp=SpQ~H zUEQq)(z3vdjS14_NACs-+%Sd7e_MesagAThEupM%8vw2&S>w%w&?%=!+n210Nd5bl zd%QIZ*7e(TS@0N6QBC~dsa9>kVjSJAq5ZhSh(TbZYjtf#=;qnET+{r9>9mY!yZ7kA z?w~_E)B8T1(rcQ6g7cjdaL5T9}A>R?>|OD-B>{!+rt`k*uWt|(Nzs9Lqx7kEp)CXrK9ZX?JnrYdpP$B z!rQsMF!ojwvXX8vR?Uo>jMOQ53d}T~7M5@}O}x4J7NR$s0JJzAn4FiPef~4MU}v+o zSh2Z&YH+t!3>_P%#4srp#5%?p)Otkn##ATO1M}foyvPJ@N#BkvO^Zu#HaXpa6LGLC zr(Z1|94CT>293TQnX2>l`>ySyC{PQtZq+=;GvZ&I0)9I^b~h1(^14wzy)dhwDKx0O zZ()cL0YbE_MOVrSRPEnOB4W5Lp8XH;lr=g%;S0tXeqRO#-XHq%72e~$(6wYu2+d6+ zQI4xhr-mVVlQa&+{5&@4=mEii{IIZ1gK|dws0>(f7Y!^0N4kM zD~nnOEfc+g`Y}ud?WW=)ZOxoI>U-$~H$7SIiMHEly!j48Gz;v1j#14c(;dqu2;|DC z3;&@e+tw^&lrV*l&^eN-Zv2n4$^ueDuS9~Y1?IIXm(rhAleBY|=wB;%-ZG8p!6%7w zV%j{3vVl5lo5ShWW6Q6*F4~zwiS3+s*%o{ajP5$H%5GLZeMp3EO;^wu=-su~eY`?t z0Rod4wZ^{2#c+KXfGoFEXC5@0v%z`pY_iA~FI$o9Rxb;HX`x(Oiu1patPI=cr-%6?>@Q_ACjbbdoq}oD*0Zv zwA`XTG@iUk9(VIVq&M^uF!GBmql-G<8Hu=zip7A8BC&WlzHNa)wS}heU*?om0>u1< z5Zv{8KJP$zT-zr0VY;xmGfqheK{RnLHASti(sXR{EEDp&jp&~e?BkJX<^XDbNP?H* z8`dZ13b{}``k7|u<=Wm8K}>T*pSX>naBl5r!-e#`6%*U#OU=tK8}9aNT=ax2r58p$8kR&eIsKpNp52zMatH zGNGUedfg22Of^VAu!wL_iRWxax9f-7C{B-?xJOQR-)g* z3f&>W&h-Yn^u;8+Ul52sXUcxuyu}Y9z1P+lF5E*BD4dsZLfGQXxgBXI&Ach_pzSR? z0~L`fEcxisA6+4n?%Tw{A()Y$dI+s95IAjXqfNBe!{Qo8?{qrI`4N!2wK|POBdy9K z`gEGol;Dz+XNTEDgSvKz%-C4}x=g;ywOXu3wue&3qeWA^gfepd-h{2*4-=&8#0_LX z1)2pg@9QaY6+9Q%Ir(ml`m3^EaNaNG0oVE%cytEgyuv_)BdXyidVB98!*(!(ajH(E zfdT|Ho*%btrN;}1deXuI{T7R77f-q+bD{5uNEjPf!PCD9=Fcj{V>kMmWx~?I}uXDLi18n zxQct08vWa#ur53z0kj?fa`V&aMEX20BEMt(4WHBbs@HjdFy3&@C17DxvEm=`C96$_ z*epDBhxgqM9|mx(nNgJXR4Us!QJpty8UpVy;Hw;(#rs|-E(w4#nSBe~N+n2T{I*Z< zA-D!Ie|f6emz=vOHs{B6X;7}10LdZS4LMEt(^I)8I58;2gNUz{B5ns5uSapy7!P62 zmY0fTm%XA2kXM=w+RAF!6d(PhFKZ*18^3H#R$ILCcMgAfe_eGY?d|0&A&l9AUiwt- zy?qukiI3_am^JBxHwmev^tNv?&2R*Pm%Q>PAnB`7OxUvrnkzf}cSQK5{PHiZz2M@q z^49r2rKV70<9AF2+IbQlOnNz}#{lXu?D@Sd7ep1|RN+1#!@B|^&fi*R2v{z%H;&3Z zYm)*&{rq{?r@$(CGzzIeZm>~nH(12=4^`82>nx2gf#O5kml5eE0YzTVGAvB&d-!Z3 z$@BmuFpb^3$mxXU%4xs%A@DxGYJ!#z(LM4MlzDYdUrxwR1# zZQR=UsMVa;_v|{reQaUDI{1#s zj4$E$s?19!3;bs52Vo;51t@kkY!kpSP*1loVClMK`4I|^q!LDXbA}V(%fWL&JlnVk zjOkOA7Hlob_9>Ujy?qH_sIJke=eEpsmRyGrP<1@@$cgr!8}NILsY0S=KR(qL-bq}4 zp>75`R<77G6Z0jF(SnL2*nNsp09^mEDdI=s2>={);X;2}S6@&-kOA`EcaTRuF`3sw zqO_5XRoZ|fBD7{%RGSlX^067s3=yqbUhT62xM{jgv(L72awtd#7T}b~i(vB1JH@!? z5{$km(1oAj=<-5&>4ycXfoh_O80Uj( zy{z^5QY7n(ufQF{1~xI)^rE=b{7QQo-Y%W$I6ZT)Z$ExaR9H&+@wyAC7shrbi%;M- z7;yMMq%50dK4rS6mc~Rs=Z9bl?Ht* zO6~$`F1gNfeKmVbcb2@7>{P0UA%GK4+B_F-PrP{|)%d&evVy%J2qdoay?_c-Q>SZ) zbK`qJgl!avNi1NDmql4bHwYmcv+coZ7zTu2_>~YO(Ep)-$N;#YFI7dJ1)SS~RH+A( zsT1W84Bq5c4Zv}1IG+5*2f-tw3f#(Bu>oz9XxVBUoTANMej9HWDRYf;qVL}(Na}Zg zNmTlv(AZDbJd!Gy#~=5qnID?%Gu9*YT8FVDW|@)|aIEpgB>ijfKBi!j83aw2TJL%F zL^4wlby}tEOBG6P+I?V!|Ios5Th(m57l*)2tj`?L_)gw0HJAj}KnlSUTSB@}ZL}0& zc4Z%dPX#{ycws)3R3mKSS$}`Pn{K4)IzOihR=$xLG7^IWP+2GcHT-DOhcfZ%Lq@^9 z?$GaN8k1T<2wMSKBwy@FbpInCRDQAPn$wVuivOyU0qd_RJEWt>*C;5$M zXAw6one+uv;(tcDZnG`MO0Aj^44h5!;#d91aXbe*F;~~PBz!d8GLnm|UGm)}x4tu5JX9={&YGXC5456S(1@ z`4UE5rkndl6rdbsD)ln8Y=~F7P#SAex}h)>ODXL}UxM&SUmLw$8`TSm(mn95){~k& z9b8d|Z@{z=*S5~AFD!$jO|9?1NU-P}v_xbUpkuFp>pgF30Loij^+6I?ER4xrt)m&GVU;ML zEI5+y28D9$+!{Sj24UK?k^U_JXqL>H*Ksh_lUDMWQBY+h!*eYllnSmFke)<}%n@i` z>OR^HXGQ@pzf^_;JSK-E!-hz_`g40nHNT{@cnZgTGgf+7#!0vw#hLjLw(wkkD;{D?6CpNxJjJ%{sN@@-)KCEK@e6m531R2y$CHA(v0e=vUhjh^ulD_Vu46`}!S*$KP7Eq|O1lO06YK(T zX}Mld7{ItBbi2EiOZYYFOB5^J9hv$cqwpMtG@Nmm8F=o02Q+QLmOb2RQ1X@2sp?E5 z1Mi&h;uu-LZt6zh^_bQ&E{ofD4zWmcs#8k@ZnbumI%@k-d`M6?6I);Q(lsgLn%|hA zA9nE-h8JYflhPY&dn=Xo0g0@$&5k_JRn+iGTk_uh{62LnQAGXnrDD=V_ELVw^7mI= zHQfs{lp|0Eqc==plO0U_j^eUUxf%+Ecv2HdJ5iVzMWO zrF_0IA!5q`Ocg5;fP>nx35s-ZXzr1LtWRk1LA6Mav$^Ehf=cpssy!EK=}=~iv*QTB zOcwTrMq>feW^7SJJ53ny4}gctbPOno_qrLv-dc0tTYn{D2r$;&f42+iua%vGM}Uk6 zOc@M`>Wd6I01ZifYB^dhj=Oyk&8Vd6o!_Fs%+Wc)u>H?zCq_DM?z}02Q=!T_dS%-O zWWae1j8(VGv>&XWFWoP3JBy@eJ{}dlbpw7IxhOB<1a=UQS2xs8q)00B#ymNhl(+-U zHT9}xa3-L;T?lYJn!^O)*JOOlu`BsCbXy4L^ez81F0pE z-U1>ielK+H4t9Kcg3rBFWmXT2+~!%+hYyidtNNW@I&AiSP_AiH`x|)>)|4v%9t9K{ z@jDt?%G1-^dc83N^LPxvOeJZ|s#iJEdIrp|U}5z+G$lu%Yfv!#U_4Yd6}snF3( zVK#y2f_T7~;5SZn5r#{if(G5p6Wv*@HcTn9fdbnmeNfpvycN<7*P^WnwiyvZTMxxl zoq*&!+9n3bh5W~#EfFZQYQC%@YzPntk&EWE-EE3xS!|GDUf@tW!AR6e#Stg=k`eDg0 zp+=H;r!p2TuWmGk4A)wRm8Mm@-G(s>H~E+BowKb_YLJ0!A812r>Y{eBvUA;xSl{7W6e#ePZPSq(AG+j7*|KeKpyME&qA|Xv!|N_Pw_8wfSQgB>OD=u;BZ6$qzi_a9-%L_yoosX%Yn6kk5)H_i;<(F zzK*L(Xk|aqCs<#6Xe7t5U!leFaL%?^jA53V^n6dQfQOpQ@*rL8QDjd$i*uft2Ko2P zUCAO=`$Ld7%`1VY#jKjr&37}VkdfO%XZz>iqGAh2}1^KLe32YIRQtTFg^l613y!&9a#ObT2$ zN84;aCI*zcarmc;Ovh(+0$;5BIfNF=8mh&}dIhyTDO?lESao0Wz-NR%kKhfFHa*#N z&QIHLU=h&8Jd-LMSl04}GyL3t3F{EPRT$`*y<8OpFX+1dsIOMu zoCoia=wd=)1;LRI7D3#Dip5&?pbqO4)i3pKMDN2CGnk>hd=Y%W&pRf1<}g$h=K$Bm znX@b+4t^$ZKt}`B2HZU`m6xZeOJjC0mFH`aKQn|Lj6XYvh;q~gj(+D4 zW*ECs&^{R3-sbbr68EI&gaz@ikNsz|hS$7rW*5(zN}W@VD6hbFk#8O&$uGHV{Z!e@ zxHxXe`$>UpYOq%2#L+`Rzzo6!v#V}PF~`G1qaJy$JI=uRWN-)V$tnhj99^||1i%Z#P9k%enqLm(kSjJ6rB;$8`_*O^^sziPbC-zGAI z;YykfW0tDOdl)8^Xr%G-G!4Mua*Z4`@EiU(d=+k_@gqXC)4B7OuJ~m~SW{iL(5ZFb zhMdfuw(*Rl_5qh`2VUHnx_YxzYieW4!RodmKDj%Dy)iGgRuLI_Zs2%CU5}hV1LcH; zg1dLhzP={cjJfs^*de#LcOR~1K1<_pDpKdd2iru!rqmlc$zgr~F?4EU=dS^r@n)nY}lDUBqxV`EdP+G zmX2*)qR{x@Pe5=!`I-AL91embId`(B4t(qL5EQxrLX>j?>{xyr-u~8`{f@E+b#G0O z>1F8H75%=9HHQAFAR_u5?(B}5pie3QC2v{onH?upy7;rCGFO)?w;IxG;LL}#Jm%Ff zLe!N&x8}C2E0 z!5asKQQg$!K(y2>z<4XAFJ!w$W{U2>3qb>nxg8c;+PFE@rW1jXp{rIYWy7BeM*9ru z-(`x3sNHJEn&`MlCz*B&o&p$DfArPic`BQL9?At7Wej$$0v1U2`&Q-LHZlQePK-;z z0)$>Yp*y9{%Pyt&rJh3^a31DO(E!fOFf}#I=%yJYV^vIixATe%upiRWcJa4b;-wJ11Ed`^@WOz_O$zLnoa->8fei zrP(V`SN3MA;VjQaGsXReaUgK(Kq8&|Q}}D@agy4i3YOCc{=Vn`bP^|a~4qvTeb<;@Et5ss%Lj6-Oyhm~4{rCLkN=>F zF~bode)ynq-d zF-fpH<+$&;@#w~#gM1%v4r0pMF#mAI1Uns0OR5J)bv58d6Tmb zteF(Pf%Ay^s$&#^^Wi8_Ri{r*-oauLpU*O=q>*yln#P?63_lFmrF-vj3B4xR(`T&2 zf;+9f*;44IiHN!{6{>HNG11f`Ut1~IBBq39IuOo~_j+77e`f%IA8WX=Y8yY|ou5M4 zws3wQ7uxrYec>$6K)~$p=tg2lGvS}6(m718Eg@rwkWU0?C=e>7XbfFJ1$Bfm`5LGz zj!5KmZ4-k@$=G&5=1=2NPkBS5tR9RItPSy{x!Gf5q@z^uaCr7rzrKuruTsc78(^*C)$?Hhx*4955Ds!vo@pYPlG@1wfYs2uCWCMU7udT>UiI zpxJ6ezP2$Vqe*@7BaV(sLClvC7CxvXr7XNEC;>bSPlLl)=*t=u`sW^)x5XqF64eTU zDn^=V$a%ng!ykg&+v8kx0!DgoE%wOj&%)fVD7%WJSEgtnf=vpN_ z#NHImvO~+%BmEYqA|4VrOSC-T&>SHg858F&SOlnB)a;U$3dg$w&FQ+QftzCk%LcYSz0R}yHah+!pKOi|hI4%VHzD8oy5IE?YnP3-e@_MN9`;GZed!Rjrwvu}?4 zary{WDrr><8dE&7(^mK=OvdK;>OtY2vv_0-QQB2$!`FXXZrI~rbXBurnHst6ZS^o! zS}Hb z6U`I_={tk~6=IM*UnVId$BB*w@e?$#Hu;gHUS;kIIfkjRLa$I_D3ULq%=p-+Y+V_s zIcN#}Ux}0b(ZHQmRRl~xYbHNLhz#_ndq1Pyw9G!ZE(8`A0D-xfeXms8ee?lx%-p*F zxi!6cJQ#$fuFX}6&ZjgzHRp9E6fwfvCHH}IK4z=#P`^j38RS|qz8O3DCdXD5t~a7D z=6737rI}(h*;@+!=DR>k2InfrD1@*1-KrMEz7AJ9I9o^4IK>n*s&O4~7jG89Flu6M zgJC*bq&!L) zhmkwVTz=YGy7bWk(|Dwv)uY~h2GjY;8}DFM3Uco#%!nyPN?$ltU!W&rZV0Lt|5ywE zsWU)985WHa@pvdQzr=LYN^^&bh+FUe>wlyBN2l`HD|*;=6vjjql!diuYJxE6P;Ccy0KAgZvslv!{q^{+_f7j^M9bO>xU^mQcQKWBln(}wO)-Rna! zCC{L|X$arTU7%Ll1)_nO|z}7ds+75FRnm{rNjC5fBPzxQU0OFNhN)6aw9V zNO-OXl*^x%#~{iFCaY3sT~P7x!*2Y)V7IVSE=|iQ_`UAbWb0ep5oy{?tqd)`S+`6n zLw`@ee>ROt={<_>b_o8XW{+i|o=F&-nPu|iAG0UTEG?yh!E3ZMUS=WF%VJUo*N>6? z{pT6)*~2N+Oz?J?#*^P#cQe^&krKT*=oANk2&`OSUyn=Vz$K?^RWT%YycK^b7K!^8 zPh|`=H1*ye^`D z7-4^hVOo$_9)h{9*R;SMCaMAoI*~H>|GurQ#6p@)M-U`4j;z|!rlGg|csA|pFKTxR z0vzBV=FOjwQ%}TY-a~5(lj5?L5x6-Lcskr<{H!c;tBiqf80?q z+!x!czSDOYfe{b495K;?M>$cAHOT~O|hm*k+6Yf}ZKvLMUY8p2Jw za-zvP3fj(pqlZ#3LXrwNkHRr+;`V1{eP1{VI-37!91E>jc*`@ z<8A>9L;~>KBo|ua@2AsI9@Q7LIQAdmR z0@Rca(vb@?-7xprFvC1z-2qA*0b*Fki6%-*WBe+t*%g+-Gvx~>-ZU=p_Oqog@8~i8gv(@-+T~!|j znqcXnc!vN6yeN>O&;oMpUJ8l})XzX0Bv1tJAmU^cU5s0ijL4gBY~>{gz#tv3+ZSX#Kv(+ zQLZtq%?hecyt7M5zBJv3a16Ctt>!r8jNqvXW)~cq>@wzS^kUjNl1W$7l_|Mi2nD(i z7tjeO7Me9la7gJo2hG_UKTf#D4ys}+6vF}dJCLI<~&io*N;C-$~!Y(<`zA+}UW zG<^~v0-riSBV|fn_fxIK#G}xB-w#rSX|-?9ib}R0WS|UYUJ0q7@M9@-_L-YNG0T0by!tn-PyMjS&_nFR9Kf_ z#^DXF&KLXRfV+*_fh#LfaK=Djl{x>F(?tWcJu!)5z8_bOK^TY`bOfg79K1u*NbyO` zS!uUPNM}A4Jw4C4&o!Aa-ct4}eVg5kPnkAVbXB2XkdFS23mpnUC9%nAjHLUph%X`I z%<1U@-_fKm^~+z;Ck&|r?OIV+XQjUL$}*;P*o7b+7hvCYo` zF`Ax=CY8dow7fRXl7(E@MbIB->{|#tpY1cJ{g(`Tv^BbNI5jE9lVKzJL`>fO)}f|x zh;T%j;cgOaPP87h^vm~20cwi;wxyN;M6{C~&zfB%8~{GS&PJ8C3wxTxKTj`OG#CU< zTiI1wU#=3jz4O@Ti{b|Sb&SMPD2Le96<=t^3C5WEzpzgf*Ux& zAv&fGsd_-+_8disx3)iN=jbg02J)n6gR>^-$y9#z&_-d>DG{W;NV#CL&`$az?aE&PQ??K z9IYQd@gWofAYgUrBH8(S9j=GA0~KT_+gZOgB#mtk1=zy04%G2k3>yoS7#9qHHA~lP z_Z_;ctL}5v9tvx*B#VC2^)A1+ZO1Q+bzC}VscrKXTeexgNd#4;f4aV_&}hcuwkjq~ zid8u^MJU2yE5;vY6HZoYNaXx7{0g1D*HP!-u7h_k7DTWn5wC$?snbCT6Dek43cvX?@Z}I zhg9J#d~|Nh&o~Z1OKy+`HAXxjctmEADPPZLi`wd z!WWdPUWkYIYu+0^g6q`y)o|PxfS$flLbwQXTU@0s3x^HkAikX6zrBdTies~rF&30^ zu4ii61efc|KPt~qN|dmVkCfrRAY9-MB-U&~=;uTy z)JSrhP|f#QrNs`H(OL=t0)U8wu<7q$I)_92o;DrKUl@fmV#;f;RTAv=k66 z^$Um(+r_#uOg9{&0?+Q$RV65g?uwI-QQ8D_V-G&(h4k%=ae?9=;^<4E#Uj;GwsA_z zZ}oyj50pC-VR=fu*F|&fWaPO7xLUPh)hrqsdV*HjgJi#ER8Ag5^1Tn*7w3)4%BYZ=WddI;eS~$Ph;>46izE}! z+>36!NCs9Ob0RS)Mb+ccnR|W82-9C(7W@p#mykt!dF(0YWrYEv>a;YL`2VDEX-vVA zmCyO`I;m=3gE0K5vk8t3zUECJqo~3HuEMbI;b$^j!hjvQwG&wZ{Ngb%h1`flO<=1m z9M@Y_Q6Hx!uy}i`IzowN{QZRxDuQgc z1)xYHYzyRL%?e2O-GzV3YPs#4N%C==?ezkIw7JrO*{g5jP~7Y=>#5;*ZV;>EHVsyi zdv*pW5a;Fe-_j`@ij&JoRm-%75NT%1I;mDCF&UCM%;vI@o*|2h(iy3gn91whv>`Z# zHz!^34D~Umjf>tpJp^r;8*!_oEEn5yTU8N{*9X{&glWqYLN$997iL~W9B+X`-?la{ zIh_kSe7insn9%TkV0(|*GCDloTZPgBK1sc?KgPR;K$$!d;fo}!zRdm$0HqK9iFolK z)i)E`UJqH@AD-FPVk|1p%C?w17O5o@oaeA0++iq|^LCyUQZ+ zV#bRVvAZOor#>y$OIbBme{RVlM7ytk;U&jJAnf@|CE*+Sa#k`kQ|Cp8>kTRQRtJ+z zCjAE)BIKT2hPXNGht^9fncoQwE1!yn|E!*BrGjj}tYS zmz5set|NSTr!IC}kY9W92~yLVOYWsj^1{S6cu@y)Qd4>7n2Q0ax6W~(HJ+Zt0Acf< zW+yIFQtOyXUxUhrA|;ne6IACzNROc&;Ul#Nn zo&HzpQb5|<5f)g%yk&5WQyM6B^$S^axjTWXIQI>G`c(!+#I%>27%yV*8{({Vyyx?T z)uz8(k}cBT^#|7|G3#*OI%Uxit-#v~qp~nhJ8WKsy0cU@wrc>t9P|$p=&OiS2pVaB zm|$3a%>m68jgIYgk80v4%oo1r5Zw*8Cf6|yDml1sy$ydvF92@tW$=lBa*aow8<3Jr zg6}XiU|lf8hV!}#T>pKEQ?b@D?pNju}SXwo6qT#-VbG4+jeC74)RDBZu1&y zb*7@J)%fKH!0Pb$vc^vx-6E-3NTrTE_1vJ3Uz{D!8r-lo8H0>`YV6ZpSFzh{ zqtiWQpRCPPhImg-ma(@3hP(QSBXB~@a0(&1@ObqeuMff6Gz?lKHOzx)U zLb|Evtz=c{r>~I@uiX0Kg@Ze@GxZ*xEVjtmqJ3_qpJLmad4V+M5RMRv!NEmQ$9PTQ9+Yh+dO<_CFwTGnyYbXodJE5EHWDBXfoGfGNrnu=#bGuxU zo4I&hSKRNFN(Nu756jh3AtL$}lLs#H^d#mQs6O?niui5{n$z>aQt$CT-sQB!Z6c23 z#^DrujRI>m&1pPIMNVRaO|gvM)nH41Hmf`a?=m~>s;nJT-5{WBWm8sm+e1`R3au$! zES4mcA12@vVBcu$Evln4HANpqG~Krp9+0(yPb5v-OBbMeR+P+Lu#D6|&o|~w;V@xc zjfGO$=ocuFtIUV@Aw4b3PXjeB;>xt~s3gR!o5C&9VadFfIZ?iA^lbbgw%DRziKCgi zJ*j879X<-Q%wdDG4QqI!ZSOFK%Veg(B03~*!Ulrp#g-wxjlyhN0D3a|{e#1LQ)= z^8bgtTli1Dj+^@GarH8Zw2N&G(OnzFF{*Y_gte+|%L=j=fJ?{$q23yQ;kdRTKhqJM zQT+Caw?#z4+vnM0XMC|D<_qobu)tM`0frNnXyqm;jT9|kINc_h)pliC#|3gV87R6g zf#ceh5iQ@mDG+*3%u<@~8$HN4PSQJ~lE1#RO*u{mcf@gL06v!R0p<%B?nEqmC^SLO>xIwnkeoNbDgM@?;fq^Jg0=G?fFem!5qMx%LDVgr1o6&+#sRp)TfMnd8 zCbk(kz_)tr#bO`&uFkoqr@+(4a#Xj5)=6Fv*{04J28u@wd2=TL4BoOaG8C$B8si$P z0&~?}w$$OWwk25w)s@|G;d~rpRsBOV|4UsW=B@25k9;f-2{c|mSy6v6*m}*f>K}G{V$9m0Wo|5O zAzUeldw=U6f%sjXB%8>dFN4XZHPX(&1C~DH`HWlapJHQyJBbmjV$EunwiO!tS4nvW z4V5L7|IIF8w*?CSS6?^U$$GiCRLGLp9@}Mq_$WhVDMmeKsI0yqU~%IGi-~1-29?o` zFqc`TdenVhPZT@46|2GRY_KgyZD)+BPQsY~RM_xwP>BF5fqf#hK^R4mhWDe_Pq5@^ zqhMp%4h)62)bA(%LxEatOWep?jbqaEH=#rJ|}dqd;Qq*eBm(Xm+T~>|Q|Hxc+{k)LY_l zMAtdRTBz*8bnAJ&Y4QwKqI7MXfT_kKSlL8s?);9B1}9@)BoIwGVq@bVinAP;j&L#+ z>GPm>x=a>cc ziE~Z4LqM;a;tjgpg)L*YW<%AHb&~8sqWmBaOVkUUW934ZLpOHQtY2%+51QQMQ@>rs z-M1}Hrz$1D+s01Q&ovO|W$>bbOuZgZqx|e~%d^aRbs_oUzo4rho9TR?KH=|XGoR(# z;nzoc&jMG82!JDYtpconBdC|zrMD{qJS@Z0gQU!&vIyOST%ckXi9pi-{#t(rWg=4P z=t(E_YRWwPMjkhnwc8R1@$$q*rDNRP(D2i=2^14ghwh}FBTz@;Q=%bwt$gXtl~@vo zBbP?-5y0S1N%>kLtx2qo(Z?G>gv2^a%jpcK<8-?GuHvqK4S$IFj&H-sgar9?7b`uK z0z`Q`fd&emS7%Onj?}gNK3z@1Zwof&ay<2TMa4(R;B7>T=kPbJ5&{g3S8ftYdgJ$& z!w_^PjWXatR!h((347$;@ub7d7*|2HTm$Sy;uyTy2EPATvgTkudVmD6vwXq-*5AOW zHa!4SkA#58WS!O5>})-F5(|#TAID6dWM0J2#_3v%`h+K`&AcC_8zDj;^i*)cFYjY6 zQOw{90GolF1dGPT=CS+5ly(8=<6gbNd#vk!d)hM?Kmu%_Ys95?R=UL6>4caT9<~>$ zkO>#;MQIGldCclzSbzxiPS@evNl6i&J}w^dkpa-bBNT!}m&eh#}oA~M^x zw&sbwOy7MqBplXr{hZ=5a6W0<8BFXAe9{d>jGP^=D~I=mUMM0Kq>`Yw#mqOsugz|B z6+xMvS^;3JhK~<50O+Wp+Jun#dzt$fnDpIc?7^bx#YxH*G=y*J%ZIbWa!i8Q`{Q1p zxy&Ivy5uGxFw2(pLF+RJ*H&^v83&UD3V-0iQGP!zN&ts4i%N)mjx=pa#?q3l-Gd7X zjNxN1o`r9)kQ#|o;)8>}2cnTbpC#hsk#6>lUIr$$)oX@K4kHz_1H(#?PL7vpYs*5# zP9#E1#L_uL3FPZL(9xPOj2Q0!53AQ<%+JM{KaZuX*{z=HA*ZP35(5rvvT7_EiW$=2 z$vJ;K%#`S3obt$QcLAxMLEDa6ppe?G(c+_FLO>@>*6DJ8-Afl2g1JW6#<1B-PfN0# zbyHKVlWB0L5+Xj=>-aCBGYrHJ5pps$%@D$USF_R&%|)$j}3~VbOQg~`lG&?z9vpl!vHSY z_tWe++19Mj#d=NAjvapvmj5t`N{gLv^*e->I%>a9(<_K-J=zCdG**YhBFX* z0&ixuk;!odK^5D27(R-h7;j3S1i_0HEj$QhGKNF>cF5hnVc5pB$ogY;*5)Jk8ep(V#^wFAJ**# zHe`Jf7p;3DP~MQ&^wl6id_m10KqjEKro@|u&s4aiomMY&FrSQq1y2Xvazd%|-cXhH z?BJj>8W1!gA|3iP1L$WsjV!+GaR4SZp|lX>%`r~EFq;NqF4z|rxI{fWiL9ua8WKr$ zQFZ+@2V|+%P?X!$TW0{l>I0hF8#N>%B!Ire`R9(0K83uOAivKjTzDdE z3dJ#XE+o~oh=}Lh!J<1+=%6gYd_D-w?a|>Umt#pSD9c7Rz<}}a5>`6yJ+xc6GY7Z^ zn#=V>?KVXXa}EGoAh2~p2I$(lg|)KM{*~qH<657afmAz7=W6ymaI4)#h}P&~>{b6k z3mKqIc`T%81NccUOu5z5xKg_=CfU&T4k=T){Dq8YBr1F0@e*6(a`?%@Oqb$1?;_|? zpnE5+T;oPXev^6q1sGO+Hhf#(Le-t;JQfjx*PMqgOwrqa2;cs)!PlRX_&}=7KzF?M z`fyJb$3{%Ei>?m1KKfD;;HYd;cA=G+D^8pHUpQYtqTt~;XY9$y`n%Xxd4j+p%RS<3 zSp(iDWg#Z*Vm>h{N)*bRoYx+U5sus|5n@!n+hbsiWzxDb&VuZCtSHH6E^Zn@cTV+s zE35lpNo-}WfZYg=q1A6_>2mtY8*|nZ4m`h$oy%(Qpwj z7f(&xyY6j;Ezy;2?tw+>VTgmL~dbQ|v^ovhaUp@{AD@1)A0JKijM0&ZY%!51@N)RQw*UOs**J z(>2yM?hX&W*QT4VuQf6%EWU%X2ml`vu>o9*{ghn8p(QfP9j>{`#u)css6RMU%&&-Z z$TNbo(AEBK#Y1@$_sj5yPea}PT`M+Oq3Z7_Xr!yM5~rF1 z1#mQ?-wwo4Ov;!18vQ74ck#O&lo?BxV5`L;^+@ydw?2RN=_tc%h< zwY3aufXq)_8v3h|IV;9dq7ktNH1u^8%-o9f(0}jbeWd7b_ZX+rVfPu942Ny+)FV>H z9mYid#ZetNw&fci>=TfCmQRG*DKr(LDD5&*JCf*4FB1QaG}{QtbO|(=ld$Q$&ZVhLp2l#Jj9ihO7rmp zsBxVlBrt-AF2L>QP)=549ALZ$W!JtF0ZRKg@4L};cCZr0A=$^^r_DEYRqR^}wgx^P&9v}-yBE)dYC-Jrxud`k`*D6)9oW-A z)frt0R5#Y7T)$&--F$S^ z*gYiy&@lqJV|>vPDtIt}*FrKpkoz<3J=AE5XSoqgsc#v7U%JXVqFO-S#A*g+u1Amj&WneRcd<<||Yu^4|P zg~+b&dp>~o{<%|5dPZ*b&7re4fN5wb}FRXlVd1WJw5qf&g zAz`>l4)iAgeN;D`h2Ud!5XZFApOAi*KGz7pK}7Ko4KfLYO-6Y5 z|1IQoJo%zmae6zHaBkg%KW&jx08sGk@HqFnH7GID^iX2kc5)Zb{`{y*`tIacQmrzi z|D(+=jtAsgoShXdZ>q8F@ADE#1Y*P$`Q~A7IKkBpzDtsCwBV~}$ph$WZQC8LaD`xW z#zv$d=xAPSs-N*W>x%BPB7V>_G)ndXf9Kt@qtqYm1ie3^CJ~7LlAxFGV?c?qUJa~~ z^japM77KvpurneVWvkkuG@k&ifqfzNPD_B?kqE7u*D{+k7eFFhjm^imuA(%c{-=F@6a8GmUxR60`T`|&q!~*&#!l4Ff z#~lS47wtL&_dO}gOk0^Mqf8*9?_8a#OLF)6pqbgSST!X{pr8j{9QTdy)QN>IJ?t>) zlf+9tbj{dvu|t_)G=xlt;DiPu11kn;9I5iAk<2ZSmkL=|lg7=`;_m2MRy837?zz`A(F*Lt_}Q$2UwPnw|Rjf*rRTdSKk z$xn7JJuYqkxmrxY{@-dvd^wJ5VfqpMHxXRxPr2IdmzkcB_SW>sGvYhY7T?KuBep0` z?Ug<`L15Jze^|&a#(vIBhGel*yYCszvW2c-3kewPHg|HN@fX70gOzWBiwr1V<1)$= z0iG}2on=4D{^UhhFmsFQDG4n@i-5J2>7oJDKP+JsA&A4tEc$z7A(4Hc&XM3l=0G5!N>w&oiiT z>4(J-g!lXOJ?1Mj{JX|2#5Nu=+uZZr{}Xym7RCHJ=QhFL;v_ z1ZEVJ$~DX86W?M?{PK0Q;7W?3havcd90fsR(gh23E-I@_x>dZtu#wp|b%oNB>zh0A zyF&r>B`6p>Xg^3N#^FQb5AP;0)R;|So3wU+Tq$O-bqnpt9;617_YWg^34Pt+tONTp<%><>yC{zJGv{Nw{ zp&-2QtB=MtFu_QjkDmi%*WWSlPTht+Gj_^P$I{yug!r(0iQpifR*w*E!nY{-%jV{{ zh`zw6P#e`*XIM9OMmzZIXo+pbWe$zX5y?5oh=XD3;uwf0?3!;evLQlpaipsv3Q3!m zE*SB<6eF+i_=WDI1s_k@Q3Kt^X3M}fLb6Gj893sXhq_cn*v<=xAFxAL!LKkuS`b2m zbM~Oh!9B5HSIW~_xr4FL%&8lS9a3@hwb}m@A`G9To7+SGwZQ|^EF#0aW z`N3R@Fo3uX%7KFFG`aVcDda?Zj216dmW}jfIMWI+FM_lhcI|0Mik2@h!}e^#cFn!9IwHy;#2 zgD*I|SYHsw^k!;)J$dJ^njwd_YyJ7F-{n{;#=5TS9m*5JLS&@ zHp4eEe7fATmG!&T3!{u2TDOI)(;8ABWlEUxwD#P_2j3TT+&nT_?LwR4 zmvZ~;Hp`g{NQl+dc5hz~ww*|Pf1s_Qcw;|R!VGYAg9A{tgLuwPwS+a)+`gpb$O+<2 zIrIm$>ELDM_~Xlk)xITFZ;R@(qYH}vZIrpvbDSjcIP2K_LNa0g)(_)%H(QEXpm!r& zJJ2SyHacXfb~PRfRa8d2)Xjj0PVUcWE!ULfNjngOkL-~^EC@5=^wN62a-QR7aDX|m zF`HHoMXfQZ%PAV4IRL|znHM-31~+;*ZiOw5Y0e2AfJZ5&Jj+L&l1Q# z6T6V{!H#6~D1OGryf!v_{p&U`0gG$WzLv_+({!`>Wuug}2QFy>_9YLIZorljJQI1%=igxtz@|T8wM# z9qTil;N%iAP!t=k>P^+5Exd&qpVhB`jeluoR#Xf423_ch!+=sAMU*aTzYS3f__zB}M|Lh8L#uR$WO3DWf1%Vb?WoJ1Xgy!BRL)6@OoYQce{4ed6HY zNLS$!6LC7r)6flu#d!uOwh~xnWa{Q^;(%=qHGg}+n}f(CjZLP+ zUkJKk2>(Oq_2t(sW-M1L7q!Q~+|hUN^y~C8`zM)=`S>Hb=BvlCm=%P8!Z>9-Pso9sqai<$1a_2Qt zW#t`) zK3_ix;#o|vpfri^RzE^|PB3!M%clgtYPb*^l}AGFrI?@jXzVR+mdXs=wEkrG4aj0$ zCc=R8jjLK5v}xMIaa)*}B7&GSGE5Mcn<@gG`}{r7jD?~9TgSD?`R4*)pZ7R+i2&QK z)q-kGw5N>Sv!l((e!bU|%Y?$FbU~5|Th8rgdT26ANZ#B8!|T2J(mWymA9D)NV6R|& z6w*RDFaLgtR)%-Ej|!VgGV^o2ybFVH%XFRfH2f*g`gS8tBNToJ{KywOvA-|k*^xr| zI)iaOUoy(!G;D5>hoe@8F9gji;p;Fwl{Je*T44WSPfV?ti&U=ZOr8@yE_{^@CaF7j z679BVnRFo)M6wu0lvcCdE*EE@i6rJ7-nH znVDOIHU4Kut6Kq71C*rdTLmMTI`AdAPzj<@y^fIxPs)rZc>2K<{_EeK9VDz2UBJ_& z*6-osU8D``q^V>HH1naYW>9GrQQD4gf*e%|wwdSDdK?k;)R11CL85MaQ8#RYke)C0 z9kigzpB;O82tX}Ovl>Z9uNjg7^0C27e1GTM*A=tP_eZq=RX!ve!5mkqGemwc0xFV` zL}!yK3>04yZt_F%4#J3&F@J-F@hT7Ku?ctRkGCUxXDQSn5JXMuLQwg zSGPk3c+w*et-*(2X>2Y#Hj-poE^gj za{wADQn+1$KPXQTnFP#(FofQ@i7rt2;vmho)oO;?8o3o$+Ho7Qgtv;l=;0EXi4mR( z$Ft&L+(V=D@F6Gyq8lf(%=N^4W~j;I_&2qggiBXsy#Q@UQO}=T`KEr;yL%0f@{NviTlj^TS(j`i@yg1M1q8? zl7$_xFag7Df_aao5?;UV>_3@UL~vDC{<~{?gL{E@%1cRwLW~d(7W*~2-Avbm#9FiN zg0k^y>n0HzYtJ5!>Ln{&C4xwI!a7}dE=x4F`yIZbIS2G7iO44w9;&KgQ=f%UFsM1j zOA@W)nEy#-YBEU7?pFh#7_R~+lfQ_R?~dt{GQTMCrLPg686s@f%Y>KjGuk&l=$mLH z&9AUcYpX`ocT;N{b%DZsp(_t)C~fijDA~`{@IK za|KfK^^odihV=(Ez>ZGEZHdI!1qwrZ=u?fetba-5q_GmOL{QbKP478y_#g!7IgBHL zK^n6&)B__hwJkOav(kbTUO}^Kpg?f;eIAPyte_ZS995>-IaK2zKk)pA z(*7F)|Kfb>W~MO41!`*nzjIOkXD~lSY)=i_!g!lWLele&QuVLlqmrifCp|wohYMDYrKQL?juzlxYgZk(0+ zQgMp(4oPcE+L^b5^l4Tf%N~_cktm8#!4cCw5@%&=k-u=T2&Fd567$?3v;OFiivv<` z1i^P7TI_>!oclA-$IYPx-si6fDz%EBfqpm&UCtgiFsK#-ysl0%912D&fpChXdi{p4X}p8y!#MagcUa#ULr;Y= zHH*rupnXE9;(d4Iw?m$?^2$&}#3RNcjIB9y$W5}^OOz(WTl#A!*!xSX>$cc!G;MI3 znk7J6nJg5-uY+au2xq2sb`@Fw#_v-82ee9VnHmACNJ** zZg;`G0?7l7B|+jCHzf85a7}Ne|1RSU6=dXgQRZ#S*#~+h+{Pt@bg3kCbZ%G4XP|L_ z8~SG2oGGJJ)xc(J8;dn@74=LC$D0o`(+I^MS)C2^ywAvQG2}pF1Yz8G-I)UR)8Bg& z3u-v2Zdl!O!ZAk^Y2S_*tS33yri1gx_lIBM^;&Hrj1$-p&ri(%>%~eL)J2H{8)+Dg zkcos|^Yvn-qt5p=m=xDO7oQ`u_agme)&`KPL6jLkn)J}QX-b+&FodL5p#iWzeB!U& z{##nl)BXBk$J)m@rX!n7^3{gOA}N%$zwixAgPV46jR^So(3kWsd^L`;>0KbJ4kG*RW}Pj9Q1C4y@iS1v0s^yTA? zukA!jkBIYTZSWg^02@Ft+*Yc}Ciaga>_);Bb(EwW1P0IUbJGX%N{lz-Q*Pg^FB+Uv zzatYbcK#p42~B&tvPj$glp6_j>TxehL%o`1s;mz&BH#SJg`1D*Smz_#wDNd3zI{r_Nb`}@z5^8M|*A9do(U~kr$D# z5AR0-&HUoZiML}8cI4od_SBLjLCo!ZYzfEE04AJr)!iBS)Gxbxik|L3aPW9s@iD%T zNI|%;(du>Yz^c|Pe(9|etU>&eAZh1w#Bw#itcgn$*QUPNJo)g4RDsIRvM>F22S(p~ z2^8a+^feGIB#FF%CGb1Nb}k5@yLM~ zgr9n7N6N7jnIUY-`$p(2x$sI;X&Y6~nwwd^Dk)vN6dd9^7k93K3SD9G4L|RjWQl^| z8xCT1mZ0;6U_DVWNLC)wa$y?In{DpB=d-jDD)A{B;=;RJ3dWR}^_EWWzR3!c7w=xH z`Im}{47rlKwsx8oh@1YeEEP=^%i{`HzHwccvFjaK@_hEit*rWJZV#=|_kt53X+FZ> zkOwW`>NU~O#F)nFnqcD;_tWWcS<1BYx+cFB6_3o)j<8-kjIBeOT$ImLN_ZL=r|GkJ zfb`v3H>V=#Rn*A>w!JIAN_5f>%KTn!JR-_J4yHF3N`i$5xXSV*^O4&W*tC#xhTX`g zvqf{|pUn6oYL-s=UvTglRAm%dKmC#pr(q6dT=R_X6j6Cj#Ik?d!z=>A1&-QH%uu5I z#BlzClyuDA2Ot?XZsI2kWM7yR%LEI2C&_U0Tr=m^&s>_6DyKVz zlFkWd;MgQImNQCl12;(u7I(&sK$E~Kz`w!?V(5Y%J@lJW@WO94+V5!qreFSybB5Lv ztL2%-Hl4kz>!a}eWji%Gol8HV_eSG4p`_|E+4T8iIZyB9R8S-wJJ%5^`ryS6@GJjv zAQa{Q?N)5)qEJZgLw1l3o8r@DO%Lw&kTAlfZ9V4Yv6gBeazH`0GVLnj?TF2oM}*gbky z!_U|hRdDIQ4Kw?_cukv{Yf)Ir0;|) z(!*Gkt1A$`KQMsgzrU@upmDEIbU+4C$KdeJ#bhj^pn)gwV=MrJqJEF{M$Sp_AG9mY zogpx%#+8Th%ZsgoBe3iF=s$sIdOEYQa+uxnCMj^Js5m3RhwNwEFg3I|W9Y`#N#ufF z2uqo)vOg1GCH=Z{3Ex!*YL9}vQg@pdV-{PwkSMQ<0=Gnx*|B@ws3(P{2^9gnL-R@r?mO6bkHElMp3gvbU4D0c zZgAgUhLP(0U~`p$X*1>WA@2DmD`p3|Teo0_5mpNrbE@qjN_R)Vr;q4i5Gb$e)2ZCz zy)oJxt8gkj%ZQr=ZFQoZogB=)FPSznk#x&RzpzO%CgY+-07rjdF$gcik#6s=3Y{+N zcnS{ya2Kq!@rup(4AThR@Caf-SjKGHXW|5$owq*dqmTkgJBW)beY`S~)o=OZmK{;z zpsp=9$Yl_shZH!HeS)y-pRc;%6)$~BUHzFnY(@OuCjIT;N#a!F%qwaK(Q-9Aa4bVD zafG2)Dn{7fGc?=8!Sf0oTGaRaJO_$5VdNApG=wL3h4V4r3zu#BI7FN+LF#?_Z>v}R zE{H{R>HjcCE?P7eW_MC0+z%maz=&yG$;Y8cf*Qdx%x&gsBfoBg>2W9q(#Wa{{!)lk zYBih1Fo^?~>qWZ#B{k2dz4?Nz016%-YV6~$1X;cTQ&@GQ#v@=z42pk_*px`tpq=R@pbvgzXfOh||B~o# TZ9O0w|NqHq9L2*Z00000^L@NN literal 109383 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%0D24a%2 Date: Mon, 28 Oct 2024 19:02:04 +0100 Subject: [PATCH 015/131] sdfg --- keepass_db.kdbx | Bin 109959 -> 109927 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keepass_db.kdbx b/keepass_db.kdbx index 03112dcffff18fe1ae917fa56b07f28494264484..eea17be687675646d7b81c7bcd9bc2d097966bd4 100644 GIT binary patch literal 109927 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%0Dht+xy4)ft0tpKg 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 z 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⪼-CLyKaDz8>DR{(W{jO8F#xzyqp)a7 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 literal 109959 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 TZ9O0w|NqHq9L2*Z00000^L@NN -- 2.43.0 From f4174a07cd7940e71c694ee43f81add35ad664d7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:02:17 +0100 Subject: [PATCH 016/131] dsfgd --- roles/mgrote_rsync/tasks/source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index d141b0eb..deb5762e 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -26,7 +26,7 @@ owner: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" mode: "0400" - no_log: true + # no_log: true # tido - name: Ensure rsync_mirror-Script is templated become: true -- 2.43.0 From 8abedc760996244f5f5256efc534b914b7d3bd5e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:03:14 +0100 Subject: [PATCH 017/131] dfg --- roles/mgrote_rsync/tasks/main.yml | 7 +++++++ roles/mgrote_rsync/tasks/source.yml | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index 8ee19b0e..55583b95 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -2,6 +2,13 @@ - name: Include user tasks ansible.builtin.include_tasks: user.yml +- name: Ensure packages are present + become: true + ansible.builtin.package: + name: + - rsync + state: present + - name: Include source tasks ansible.builtin.include_tasks: source.yml when: "'source' in rsync_host_role" diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index deb5762e..4700d6c4 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -1,11 +1,4 @@ --- -- name: Ensure packages are present - become: true - ansible.builtin.package: - name: - - rsync - state: present - - name: Ensure needed dirs exist become: true ansible.builtin.file: -- 2.43.0 From 6acead7844a4b194575195c8454128600f65ab88 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:03:39 +0100 Subject: [PATCH 018/131] dfgsdfgs --- playbooks/3_service/pbs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/playbooks/3_service/pbs.yml b/playbooks/3_service/pbs.yml index 9c3cccb6..4443545d 100644 --- a/playbooks/3_service/pbs.yml +++ b/playbooks/3_service/pbs.yml @@ -19,3 +19,5 @@ tags: "pbs_users" - role: mgrote_pbs_datastores tags: "pbs_datastores" + - role: mgrote_rsync + tags: "rsync" -- 2.43.0 From 0ff3c45042ef6a4233cd5825e6b05a5a4fe374b3 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:06:38 +0100 Subject: [PATCH 019/131] dsf --- roles/mgrote_rsync/defaults/main.yml | 2 +- roles/mgrote_rsync/templates/private_key.j2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 401208ec..5a5e5c8a 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -9,7 +9,7 @@ rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp -rsync_mirror_privatekey: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'password') }}" +rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'password') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'password') }}" ## todo ssh konfig in datei statt inline? diff --git a/roles/mgrote_rsync/templates/private_key.j2 b/roles/mgrote_rsync/templates/private_key.j2 index dbf9651b..b88c79ae 100644 --- a/roles/mgrote_rsync/templates/private_key.j2 +++ b/roles/mgrote_rsync/templates/private_key.j2 @@ -1 +1 @@ -{{ rsync_mirror_privatekey }} +{{ rsync_mirror_private_key }} -- 2.43.0 From 1327cbee4b17216d203e83197161c8b15fa1ab20 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:07:29 +0100 Subject: [PATCH 020/131] dsfg --- roles/mgrote_rsync/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 5a5e5c8a..5a536cc4 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -9,7 +9,7 @@ rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp -rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'password') }}" -rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'password') }}" +rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" +rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" ## todo ssh konfig in datei statt inline? -- 2.43.0 From 10df0915e3df88ef371de75da68711c590b9ce35 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:08:27 +0100 Subject: [PATCH 021/131] dfg --- roles/mgrote_rsync/defaults/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 5a536cc4..fb18b3da 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -2,14 +2,14 @@ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "2m" # 2 Megabytes -### when should rsync_mirror be run (every 5 minutes) -rsync_mirror_timer: '*-*-* *:00/5' +rsync_mirror_timer: '*-*-* *:00/5' #(every 5 minutes) + +rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" +rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp -rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" -rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" ## todo ssh konfig in datei statt inline? -- 2.43.0 From 88dc36aba37fa04776e12096547ecabb6768b056 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:09:32 +0100 Subject: [PATCH 022/131] sdf --- roles/mgrote_rsync/tasks/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index 20258f57..986cedaf 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -10,7 +10,7 @@ ansible.builtin.user: name: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" - create_home: false + create_home: true - name: Ensure user is added to sudoers become: true -- 2.43.0 From 34295724c05893cf771591343c03d57a163274c7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:10:09 +0100 Subject: [PATCH 023/131] ff --- roles/mgrote_rsync/tasks/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index 986cedaf..a3bdb9a6 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -10,7 +10,7 @@ ansible.builtin.user: name: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" - create_home: true + create_home: true # für .ssh - name: Ensure user is added to sudoers become: true -- 2.43.0 From 9942d44b0ec0239264daa736e3ca179730b4ef0e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:10:33 +0100 Subject: [PATCH 024/131] dfg --- roles/mgrote_rsync/tasks/destination.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/tasks/destination.yml b/roles/mgrote_rsync/tasks/destination.yml index 5eaded78..1b2f6f9b 100644 --- a/roles/mgrote_rsync/tasks/destination.yml +++ b/roles/mgrote_rsync/tasks/destination.yml @@ -1,5 +1,6 @@ --- - name: Ensure SSH-Public-Key is templated + become: true ansible.posix.authorized_key: user: "{{ rsync_mirror_user }}" key: "{{ rsync_mirror_public_key }}" -- 2.43.0 From 17d07a3c0f1d7803ead418a2a8af3df175483ebe Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:18:20 +0100 Subject: [PATCH 025/131] fdgh --- roles/mgrote_rsync/defaults/main.yml | 3 ++- roles/mgrote_rsync/tasks/source.yml | 9 +++++++++ roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- roles/mgrote_rsync/templates/ssh-config.j2 | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 roles/mgrote_rsync/templates/ssh-config.j2 diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index fb18b3da..8ae0a8c3 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -7,9 +7,10 @@ rsync_mirror_timer: '*-*-* *:00/5' #(every 5 minutes) rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" +rsync_mirror_destination_host: pbs.mgrote.net rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten - dest: rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp + dest: /backup/pve5/tmp ## todo ssh konfig in datei statt inline? diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 4700d6c4..a4a249b9 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -21,6 +21,15 @@ mode: "0400" # no_log: true # tido +- name: Ensure SSH-Config is templated + become: true + ansible.builtin.template: + src: ssh-config.j2 + dest: "/home/rsync_mirror/.ssh/config" + owner: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" + mode: "0400" + - name: Ensure rsync_mirror-Script is templated become: true ansible.builtin.template: diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 61253d9a..ac556bb6 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -2,5 +2,5 @@ {{ file_header | default () }} {% for item in rsync_mirror_dirs %} -rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} +rsync --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ rsync_mirror_user }}@{{ rsync_mirror_destination_host }}:{{ item.dest }} {% endfor %} diff --git a/roles/mgrote_rsync/templates/ssh-config.j2 b/roles/mgrote_rsync/templates/ssh-config.j2 new file mode 100644 index 00000000..1ec958e7 --- /dev/null +++ b/roles/mgrote_rsync/templates/ssh-config.j2 @@ -0,0 +1,5 @@ +### keys +StrictHostKeyChecking=accept-new +Host pbs.mgrote.net + User {{ rsync_mirror_user }} + IdentityFile /etc/rsync_mirror/.ssh/id_rsync_mirror -- 2.43.0 From 16dd2e89936739ea18308ea06b787ece6347bb6d Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:19:27 +0100 Subject: [PATCH 026/131] dsfg --- roles/mgrote_rsync/tasks/source.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index a4a249b9..643be8da 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -68,8 +68,8 @@ become: true ansible.builtin.systemd: name: "{{ item }}" - masked: false - enabled: true + masked: true # todo umkehren + enabled: false # todo umkehren loop: - rsync_mirror.service - rsync_mirror.timer -- 2.43.0 From 76df8b35cfe4d198b7a473318b621764ef1cc3e7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:20:07 +0100 Subject: [PATCH 027/131] dfg --- roles/mgrote_rsync/tasks/source.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 643be8da..97b12583 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -10,6 +10,7 @@ with_items: - "/etc/rsync_mirror/" - "/etc/rsync_mirror/.ssh" + - "/home/{{ rsync_mirror_user }}/.ssh" - name: Ensure SSH-Private-Key is templated become: true -- 2.43.0 From d4bbcaaa15055dc67e852929c97f36eb12d13d34 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:24:24 +0100 Subject: [PATCH 028/131] sdfs --- roles/mgrote_rsync/tasks/source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 97b12583..aa5e9704 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -6,7 +6,7 @@ state: directory owner: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" - mode: "0600" + mode: "0700" with_items: - "/etc/rsync_mirror/" - "/etc/rsync_mirror/.ssh" -- 2.43.0 From f4678c57951c1b71b28ca725bb950b5240be70b7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:30:51 +0100 Subject: [PATCH 029/131] sdf --- roles/mgrote_rsync/defaults/main.yml | 3 +-- roles/mgrote_rsync/tasks/source.yml | 6 +++--- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- roles/mgrote_rsync/templates/ssh-config.j2 | 5 ----- 4 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 roles/mgrote_rsync/templates/ssh-config.j2 diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 8ae0a8c3..6a2b8dc1 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -7,10 +7,9 @@ rsync_mirror_timer: '*-*-* *:00/5' #(every 5 minutes) rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -rsync_mirror_destination_host: pbs.mgrote.net rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten - dest: /backup/pve5/tmp + dest: {{ rsync_mirror_user }}@mgrote:/backup/pve5/tmp ## todo ssh konfig in datei statt inline? diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index aa5e9704..7354128d 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -22,14 +22,14 @@ mode: "0400" # no_log: true # tido -- name: Ensure SSH-Config is templated +- name: Ensure SSH-Config is templated # todo become: true - ansible.builtin.template: - src: ssh-config.j2 + ansible.builtin.file: dest: "/home/rsync_mirror/.ssh/config" owner: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" mode: "0400" + state: absent - name: Ensure rsync_mirror-Script is templated become: true diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index ac556bb6..264ca03a 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -2,5 +2,5 @@ {{ file_header | default () }} {% for item in rsync_mirror_dirs %} -rsync --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ rsync_mirror_user }}@{{ rsync_mirror_destination_host }}:{{ item.dest }} +rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} {% endfor %} diff --git a/roles/mgrote_rsync/templates/ssh-config.j2 b/roles/mgrote_rsync/templates/ssh-config.j2 deleted file mode 100644 index 1ec958e7..00000000 --- a/roles/mgrote_rsync/templates/ssh-config.j2 +++ /dev/null @@ -1,5 +0,0 @@ -### keys -StrictHostKeyChecking=accept-new -Host pbs.mgrote.net - User {{ rsync_mirror_user }} - IdentityFile /etc/rsync_mirror/.ssh/id_rsync_mirror -- 2.43.0 From 9188b03585bb5d3ceec221f1abc45db6354f63d6 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:31:48 +0100 Subject: [PATCH 030/131] sdfg --- roles/mgrote_rsync/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 6a2b8dc1..be4f5941 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -9,7 +9,7 @@ rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_publ rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten - dest: {{ rsync_mirror_user }}@mgrote:/backup/pve5/tmp + dest: "{{ rsync_mirror_user }}@mgrote:/backup/pve5/tmp" ## todo ssh konfig in datei statt inline? -- 2.43.0 From 4bbaa04c091c123f48e3eed31e5da08de76813ef Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:36:13 +0100 Subject: [PATCH 031/131] sdf --- roles/mgrote_rsync/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index be4f5941..d59c3324 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -9,7 +9,7 @@ rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_publ rsync_mirror_dirs: - src: /hdd_data/tmp # slashes beachten - dest: "{{ rsync_mirror_user }}@mgrote:/backup/pve5/tmp" + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" ## todo ssh konfig in datei statt inline? -- 2.43.0 From 281c9a8227b9c833b1a873c9a07e9abf4fb3712d Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Mon, 28 Oct 2024 19:37:23 +0100 Subject: [PATCH 032/131] dfg --- roles/mgrote_rsync/tasks/source.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 7354128d..5fe99ae3 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -36,8 +36,8 @@ ansible.builtin.template: src: "rsync_mirror.sh.j2" dest: "/usr/bin/rsync_mirror.sh" - owner: root - group: root + owner: "{{ rsync_mirror_user }}" + group: "{{ rsync_mirror_user_group }}" mode: "0750" - name: Ensure services are present -- 2.43.0 From 1896df490a3f6abc6e02f40f2d5d3b51cc777c15 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 11:48:12 +0100 Subject: [PATCH 033/131] dfg --- host_vars/pbs.mgrote.net.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 0fb8b394..1705b673 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -155,3 +155,8 @@ sanoid_datasets: recursive: 'no' snapshots: true template: '3tage' + + + + +## todo snap für dataset in backup aktivieren -- 2.43.0 From 0071f73b117791ada3077bf5dea47f5ce2b0bcc7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:19:09 +0100 Subject: [PATCH 034/131] fgdh --- roles/mgrote_rsync/defaults/main.yml | 31 +++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index d59c3324..ec8b66a0 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -7,9 +7,34 @@ rsync_mirror_timer: '*-*-* *:00/5' #(every 5 minutes) rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -rsync_mirror_dirs: -- src: /hdd_data/tmp # slashes beachten +rsync_mirror_dirs: # "/" beachten! +- src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - +- src: hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" +- src: hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" +- src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +- src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +- src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +- src: hdd_data/papa_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" +- src: hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +- src: hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +- src: hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +- src: hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +- src: hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +- src: hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +- src: hdd_data/vm + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" ## todo ssh konfig in datei statt inline? -- 2.43.0 From 3b165c9d02e027bb98b28d6fcba513d807209941 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:21:45 +0100 Subject: [PATCH 035/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 264ca03a..91e08e96 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -2,5 +2,6 @@ {{ file_header | default () }} {% for item in rsync_mirror_dirs %} +echo "Source: {{ item.src }}" rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} {% endfor %} -- 2.43.0 From 6561dca5aa52c6c53a14eca3dcfcf8ffe057f69f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:22:28 +0100 Subject: [PATCH 036/131] sdfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 91e08e96..f98d5c57 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -2,6 +2,7 @@ {{ file_header | default () }} {% for item in rsync_mirror_dirs %} +echo "-----------------------" echo "Source: {{ item.src }}" rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} {% endfor %} -- 2.43.0 From d6391d4f29af67154f43b41805c35d4336ac8640 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:23:47 +0100 Subject: [PATCH 037/131] dd --- roles/mgrote_rsync/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index ec8b66a0..9d1c8a8c 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -2,7 +2,7 @@ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "2m" # 2 Megabytes -rsync_mirror_timer: '*-*-* *:00/5' #(every 5 minutes) +rsync_mirror_timer: ' *-*-* */6:00:00' # Every 6 hour rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From 4edc8e3f9eb2aef42379ff4da656e25bcf49a248 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:24:26 +0100 Subject: [PATCH 038/131] dfgdfg --- roles/mgrote_rsync/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 9d1c8a8c..71e2aa10 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -2,7 +2,7 @@ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "2m" # 2 Megabytes -rsync_mirror_timer: ' *-*-* */6:00:00' # Every 6 hour +rsync_mirror_timer: '*-*-* */6:00:00' # Every 6 hour rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From 4f9c8f5a3d3b27a3044de323c42f8dc8d18769d6 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:27:56 +0100 Subject: [PATCH 039/131] dd --- roles/mgrote_rsync/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 71e2aa10..a655063e 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -2,7 +2,7 @@ rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "2m" # 2 Megabytes -rsync_mirror_timer: '*-*-* */6:00:00' # Every 6 hour +rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From ec855b3f57bda4d418ac09c58b3390f5474c7ae0 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:31:59 +0100 Subject: [PATCH 040/131] dsfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index f98d5c57..eb5acc52 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -4,5 +4,8 @@ {% for item in rsync_mirror_dirs %} echo "-----------------------" echo "Source: {{ item.src }}" -rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --checksum --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} +rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} {% endfor %} + + +# --checksum ; https://serverfault.com/questions/211005/rsync-difference-between-checksum-and-ignore-times-options -- 2.43.0 From 9036ec0ccfb279441bcb56b316d49e244738ce73 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:33:14 +0100 Subject: [PATCH 041/131] dfgd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index eb5acc52..f58b7ebf 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -5,6 +5,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} +echo "-----------------------" {% endfor %} -- 2.43.0 From fd8324218e3d4067d27f4416a71d4cd70318f3bf Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:35:06 +0100 Subject: [PATCH 042/131] keepass syncoid ssh key disable --- keepass_db.kdbx | Bin 109927 -> 110087 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keepass_db.kdbx b/keepass_db.kdbx index eea17be687675646d7b81c7bcd9bc2d097966bd4..d2f4b77d7325394f242886b1beb5b80790f117b1 100644 GIT binary patch literal 110087 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
6!>#`4J))QQIg=)>t>(qIQrk6>w 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⋐sk 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 literal 109927 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%0Dht+xy4)ft0tpKg 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 z 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⪼-CLyKaDz8>DR{(W{jO8F#xzyqp)a7 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 -- 2.43.0 From 357e47d7db9b9433378cd55af8889d45dd39dc36 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:35:33 +0100 Subject: [PATCH 043/131] firdhof --- .../mgrote_zfs_sanoid_mit_syncoid/README.md | 85 +++++++++++++++++++ .../defaults/main.yml | 49 +++++++++++ .../handlers/main.yml | 5 ++ .../tasks/destination.yml | 85 +++++++++++++++++++ .../tasks/main.yml | 78 +++++++++++++++++ .../tasks/snaps.yml | 46 ++++++++++ .../tasks/source.yml | 20 +++++ .../tasks/user.yml | 19 +++++ .../templates/overrides.j2 | 6 ++ .../templates/private_key.j2 | 1 + .../templates/sanoid.conf.j2 | 25 ++++++ .../templates/sanoid_mail.service.j2 | 8 ++ .../templates/syncoid.service.j2 | 10 +++ .../templates/syncoid.sh.j2 | 12 +++ .../templates/syncoid.timer.j2 | 9 ++ .../templates/syncoid_mail.service.j2 | 8 ++ 16 files changed, 466 insertions(+) create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/README.md create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/defaults/main.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/handlers/main.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/destination.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/main.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/snaps.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/source.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/user.yml create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/overrides.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/private_key.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid.conf.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid_mail.service.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.service.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.sh.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.timer.j2 create mode 100644 friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid_mail.service.j2 diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/README.md b/friedhof/mgrote_zfs_sanoid_mit_syncoid/README.md new file mode 100644 index 00000000..552ed0f0 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/README.md @@ -0,0 +1,85 @@ +## mgrote.zfs_sanoid + +### Beschreibung +Installiert und konfiguriert ``sanoid`` + ``syncoid``. + +Es gibt 3 Funktionen: + +1. Snapshots erstellen und entfernen +2. Snapshots senden +3. Snapshots empfangen + +### getestet auf +- ProxMox 7.* +- Ubuntu 20.04 + +### Variablen + Defaults +- see [defaults](./defaults/main.yml) + + +### Beispiel Playbook + +```yaml +--- +- hosts: host1,host2 + roles: + - { role: mgrote_zfs_sanoid, tags: "sanoid" } +``` + +### Beispiel - Snapshots erstellen + + +#### Variablen + +```yaml +--- + sanoid_snaps_enable: true + sanoid_datasets: + - path: 'hdd_data/videos' + template: '31tage' + recursive: 'yes' + snapshots: true + sanoid_templates: + - name: '31tage' + keep_hourly: '24' # Aufheben (Stunde) + keep_daily: '31' # Aufheben (Tage) + keep_monthly: '3' # Aufheben (Monate) + keep_yearly: '0' # Aufheben (Jahre) + frequently: '16' # Aufheben (Minuten) + frequent_period: '15' # Intervall (alle 5 Minuten) + autosnap: 'yes' # Automatisches erstellen von Snapshots + autoprune: 'yes' + +``` + +### Beispiel - Snapshots senden und empfangen + +- Host 1 = Source +- Host 2 = Destination + + + +#### Variablen - Host 1 + +```yaml + sanoid_syncoid_source_host: true + sanoid_syncoid_ssh_pubkey: | + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3U37DGPRPDLlgxZcM0Zj/x6RVZxs7hcWBYfPywujH4+mjbpzJckr2tx3QLfxsCCjQVb4LNSEB0xsOvzDjfDsaPuG4wzqFVyZOtjI4iWg/it4ARndun33r+xSlWc5JKHH9GRK8SBOd4lXv5ylENdhWQ7z5ZF/FtCysb1JHTTYlobgXfTZ4NswJj6BBk669l13uL6zSXq6x6vm1GWiFIcIYqwM5WGSGHFoD2RNn0TJKI9A3AULPloMzWeHG3fJhoVfNY6ZB0kqpTHGoAmJUURkBFki1cJkzx3tyto4VpTzZmUyYg+qqIWbv7Me3YVJCln8JYD10uDb2oPRx6G3C9DlnzRmAVVbqCHzwvOY0H5TLTW7AXCHHgSdHaRym4oTUY9dDS/XFU3rHgexerBbi3sy1Tm0/dEU3cZFm4YOJXY/l4TeTRlhg2VbctsWE1BN1CZcoJRR+qNdJzM7Vl70Y6RGU92Y1rzSpooYVuyCFDrEIp0hAHidb5rs4paCvoxtVqak+LK8dcq0IbWxcxomEimeRG4+Opd3vo+U6subp5jqkOY0uYkFVJXaMHkP5ZIxlCFgif2A3YAPhz9IczRJaaNY3pbVgU7ybOBp+S8KRK8Ysk6OP5ApOTQVTlRhYeNqo7mpuW6139VRY5luekSCy3ehHCI9/MObhu2juF1Nz0HMeMQ== mg@irantu +``` + + +#### Variablen - Host 2 + +```yaml + sanoid_syncoid_timer: '*:*' + sanoid_syncoid_bwlimit: 30m + sanoid_syncoid_datasets_sync: + - source_host: host1.lan + source_dataset: hdd_data_mirror + destination_mount_check: hdd_data/encrypted # Wenn dieses Dataset nicht gemountet ist(z.B. durch Verschlüsselung, dann bricht syncoid ab) + destination_dataset: hdd_data/encrypted/syncoid/zfs1 + skip_parent: false + sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" + sanoid_syncoid_destination_host: true + +``` diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/defaults/main.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/defaults/main.yml new file mode 100644 index 00000000..78cf8310 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/defaults/main.yml @@ -0,0 +1,49 @@ +--- +### when should sanoid be run (every 5 minutes) +sanoid_timer: '*-*-* *:00/5' +### when should syncoid be run +sanoid_syncoid_timer: '*-*-* *:00:00' + +# ### "Default" Datasets +# sanoid_datasets: # dictionary +# - path: 'hdd_data/data' # path to dataset; without leading / +# template: 'fiveminutes' # name +# recursive: 'no' # recursive snapshotting +# snapshots: true # (de)activate; can be used to disable snapshotting of subdatasets if recursive is set +# - path: 'hdd_data/test' +# snapshots: false # deaktiviert sanoid für das dataset +# +# ### Templates +# sanoid_templates: +# - name: 'fiveminutes' +# keep_hourly: '24' # Aufheben (Stunde) +# keep_daily: '31' # Aufheben (Tage) +# keep_monthly: '6' # Aufheben (Monate) +# keep_yearly: '0' # Aufheben (Jahre) +# frequently: '36' # Aufheben (Minuten) +# frequent_period: '5' # Intervall (alle 5 Minuten) +# autosnap: 'yes' # Automatisches erstellen von Snapshots +# autoprune: 'yes' + +### user and group for sanoid +sanoid_user: sanoid +sanoid_user_group: sanoid + +### enable/disable features +## enable snapshotting +# sanoid_snaps_enable: true +## enable sending snaps +# sanoid_syncoid_source_host: true +## enable receiving snaps +# sanoid_syncoid_destination_host: true + +# syncoid +#sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" +#sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" + +### mgrote_sanoid +#sanoid_syncoid_datasets_sync: +# - source_host: pve5.mgrote.net +# source_dataset: hdd_data/tmp +# destination_mount_check: hdd_data/tmp # zielpool +# destination_dataset: backup/pve5/tmp diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/handlers/main.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/handlers/main.yml new file mode 100644 index 00000000..ab3f5feb --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: systemctl daemon-reload + become: true + ansible.builtin.systemd: + daemon_reload: true diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/destination.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/destination.yml new file mode 100644 index 00000000..410ae691 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/destination.yml @@ -0,0 +1,85 @@ +--- +- name: template ssh private key + become: true + ansible.builtin.template: + src: private_key.j2 + dest: "/etc/sanoid/.ssh/id_sanoid" + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0400" + no_log: true + when: + - sanoid_syncoid_destination_host + +- name: Ensure user is added to sudoers + become: true + community.general.sudoers: + name: "users-sudo-{{ sanoid_user }}" + state: present + user: "{{ sanoid_user }}" + commands: ALL + nopassword: true + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.service + become: true + ansible.builtin.template: + src: "syncoid.service.j2" + dest: /etc/systemd/system/syncoid.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.sh + become: true + ansible.builtin.template: + src: "syncoid.sh.j2" + dest: /usr/bin/syncoid.sh + owner: root + group: root + mode: "0755" + when: + - sanoid_syncoid_destination_host + +- name: template syncoid_mail.service + become: true + ansible.builtin.template: + src: "syncoid_mail.service.j2" + dest: /etc/systemd/system/syncoid_mail.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: template syncoid.timer + become: true + ansible.builtin.template: + src: "syncoid.timer.j2" + dest: "/etc/systemd/system/syncoid.timer" + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host + +- name: enable syncoid.timer + become: true + ansible.builtin.systemd: + name: "syncoid.timer" + enabled: true + masked: false + state: started + notify: + - systemctl daemon-reload + when: + - sanoid_syncoid_destination_host diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/main.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/main.yml new file mode 100644 index 00000000..30e0bbd1 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/main.yml @@ -0,0 +1,78 @@ +--- +- name: include user tasks + ansible.builtin.include_tasks: user.yml + +- name: install packages from repo + become: true + ansible.builtin.apt: + name: + - mbuffer + - lzop + - libcapture-tiny-perl + - pv + - libconfig-ini-perl + - sanoid + state: present + +- name: Overwrite syncoid script from package + become: true + ansible.builtin.get_url: + url: https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/syncoid + dest: /usr/bin/syncoid + mode: '0755' + owner: root + group: root + force: true + +- name: create sanoid directories + become: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0700" + with_items: + - "/etc/sanoid" + - "/etc/sanoid/.ssh" + +- name: include snaps tasks + ansible.builtin.include_tasks: snaps.yml + when: + - sanoid_datasets is defined + - sanoid_templates is defined + - sanoid_snaps_enable is defined + - sanoid_snaps_enable + +- name: ensure timers are enabled + become: true + ansible.builtin.systemd: + state: started + name: "{{ item }}" + daemon_reload: true + masked: false + enabled: true + loop: + - sanoid.timer + +- name: ensure services are enabled + become: true + ansible.builtin.systemd: + name: "{{ item }}" + masked: false + enabled: true + loop: + - sanoid.service + - sanoid-prune.service + +- name: include source-host tasks + ansible.builtin.include_tasks: source.yml + when: + - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true + - sanoid_syncoid_ssh_pubkey is defined + +- name: include destination-host tasks + ansible.builtin.include_tasks: destination.yml + when: + - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true + - sanoid_syncoid_ssh_privkey is defined diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/snaps.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/snaps.yml new file mode 100644 index 00000000..5a6b6aac --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/snaps.yml @@ -0,0 +1,46 @@ +--- +- name: Generate Sanoid Configuration + become: true + ansible.builtin.template: + src: sanoid.conf.j2 + dest: "/etc/sanoid/sanoid.conf" + owner: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + mode: "0400" + +- name: template sanoid_mail.service + become: true + ansible.builtin.template: + src: "sanoid_mail.service.j2" + dest: /etc/systemd/system/sanoid_mail.service + owner: root + group: root + mode: "0644" + notify: + - systemctl daemon-reload + +- name: add overrides (sanoid_mail + TZ) + become: true + ansible.builtin.template: + src: "overrides.j2" + mode: "0644" + owner: root + group: root + dest: /lib/systemd/system/sanoid.service.d/override.conf + notify: + - systemctl daemon-reload + +- name: set timer + become: true + ansible.builtin.blockinfile: + create: true + mode: "0644" + owner: root + group: root + path: /lib/systemd/system/sanoid.timer.d/override.conf + block: | + [Timer] + OnCalendar = {{ sanoid_timer }} + when: sanoid_timer is defined + notify: + - systemctl daemon-reload diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/source.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/source.yml new file mode 100644 index 00000000..e3d605d2 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/source.yml @@ -0,0 +1,20 @@ +--- +- name: template ssh public key + become: true + ansible.posix.authorized_key: + user: "{{ sanoid_user }}" + key: "{{ sanoid_syncoid_ssh_pubkey }}" + state: present + when: + - sanoid_syncoid_source_host + +- name: Ensure user is added to sudoers + become: true + community.general.sudoers: + name: "users-sudo-{{ sanoid_user }}" + state: present + user: "{{ sanoid_user }}" + commands: ALL + nopassword: true + when: + - sanoid_syncoid_source_host diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/user.yml b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/user.yml new file mode 100644 index 00000000..541c63a2 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/tasks/user.yml @@ -0,0 +1,19 @@ +--- +- name: ensure group exists + become: true + ansible.builtin.group: + name: "{{ sanoid_user_group }}" + state: present + when: + - sanoid_user_group is defined + - sanoid_user is defined + +- name: ensure user exists + become: true + ansible.builtin.user: + name: "{{ sanoid_user }}" + group: "{{ sanoid_user_group }}" + create_home: true + when: + - sanoid_user_group is defined + - sanoid_user is defined diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/overrides.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/overrides.j2 new file mode 100644 index 00000000..e9033464 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/overrides.j2 @@ -0,0 +1,6 @@ +{{ file_header | default () }} + +[Unit] +OnFailure = sanoid_mail.service +[Service] +Environment=TZ=Europe/Berlin diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/private_key.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/private_key.j2 new file mode 100644 index 00000000..de719dbf --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/private_key.j2 @@ -0,0 +1 @@ +{{ sanoid_syncoid_ssh_privkey }} diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid.conf.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid.conf.j2 new file mode 100644 index 00000000..26fa7f80 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid.conf.j2 @@ -0,0 +1,25 @@ +{{ file_header | default () }} +## ZFS Section -------------------------------- ## +{% for item in sanoid_datasets if item.snapshots is sameas true %} +[{{ item.path }}] + use_template = {{ item.template }} + recursive = {{ item.recursive }} +## -------------------------------------------- ## +{% endfor %} + +## Template Section --------------------------- ## +{% for item in sanoid_templates %} +[template_{{ item.name }}] + ## Keep-Rules + hourly = {{ item.keep_hourly }} + daily = {{ item.keep_daily }} + monthly = {{ item.keep_monthly }} + yearly = {{ item.keep_yearly }} + frequently = {{ item.frequently }} + ## Interval + frequent_period = {{ item.frequent_period }} + ## Other Options + autosnap = {{ item.autosnap }} + autoprune = {{ item.autoprune }} +## -------------------------------------------- ## +{% endfor %} diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid_mail.service.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid_mail.service.j2 new file mode 100644 index 00000000..3c3a9727 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/sanoid_mail.service.j2 @@ -0,0 +1,8 @@ +{{ file_header | default () }} + +[Unit] +Description=Send a Mail in case of an error in sanoid.service. + +[Service] +Type=oneshot +ExecStart=/bin/bash -c '/bin/systemctl status sanoid.service | mail -aFROM:sanoid@mgrote.net -s "[ERROR] sanoid - %H" {{ my_mail }}' diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.service.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.service.j2 new file mode 100644 index 00000000..af61c7f5 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.service.j2 @@ -0,0 +1,10 @@ +{{ file_header | default () }} + +[Unit] +Description=Send zfs snapshots with sanoid/syncoid. +OnFailure=syncoid_mail.service +OnSuccess=syncoid_mail.service + +[Service] +Type=simple +ExecStart=/usr/bin/syncoid.sh diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.sh.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.sh.j2 new file mode 100644 index 00000000..68b2f752 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.sh.j2 @@ -0,0 +1,12 @@ +#!/bin/bash +{{ file_header | default () }} + +# check if dest-dataset is mounted (sed: entferne 1. Zeile; awk: zeige nur yes/no; grep: RC1 when != yes) +{% for item in sanoid_syncoid_datasets_sync %} +# check if target dataset is mounted +/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} 2>&1 > /dev/null || echo "Pool not mounted!" +# check if source host is reachable +ping -c1 -W1 {{ item.source_host }} > /dev/null || {{ item.source_host }} not reachable! +# syncoid +export HOME=/root ; /usr/bin/syncoid --compress=zstd-fast --sshoption=StrictHostKeyChecking=no --delete-target-snapshots --use-hold --preserve-recordsize --sshkey "/etc/sanoid/.ssh/id_sanoid" --source-bwlimit {{ sanoid_syncoid_bwlimit }} {{ sanoid_user }}@{{ item.source_host }}:{{ item.source_dataset }} {{ item.destination_dataset }} +{% endfor %} diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.timer.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.timer.j2 new file mode 100644 index 00000000..16438ec7 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid.timer.j2 @@ -0,0 +1,9 @@ +{{ file_header | default () }} +[Unit] +Description=Timer for syncoid. + +[Timer] +OnCalendar={{ sanoid_syncoid_timer }} + +[Install] +WantedBy=timers.target multi-user.target zfs.target diff --git a/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid_mail.service.j2 b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid_mail.service.j2 new file mode 100644 index 00000000..caa59b24 --- /dev/null +++ b/friedhof/mgrote_zfs_sanoid_mit_syncoid/templates/syncoid_mail.service.j2 @@ -0,0 +1,8 @@ +{{ file_header | default () }} + +[Unit] +Description=Send a Mail for sanoid service after error or success sanoid.service. + +[Service] +Type=oneshot +ExecStart=/bin/bash -c '/usr/bin/journalctl -u syncoid.service -n 30 | mail -aFROM:syncoid@mgrote.net -s "syncoid - %H" {{ my_mail }}' -- 2.43.0 From 5bfb4a021ac00369c7faf5a05e6d325248a20dda Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:37:47 +0100 Subject: [PATCH 044/131] dsfg --- roles/mgrote_zfs_sanoid/tasks/destination.yml | 36 ++++++++++--------- roles/mgrote_zfs_sanoid/tasks/main.yml | 4 +-- roles/mgrote_zfs_sanoid/tasks/source.yml | 4 +-- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/destination.yml b/roles/mgrote_zfs_sanoid/tasks/destination.yml index 410ae691..7583e1c5 100644 --- a/roles/mgrote_zfs_sanoid/tasks/destination.yml +++ b/roles/mgrote_zfs_sanoid/tasks/destination.yml @@ -1,9 +1,9 @@ --- - name: template ssh private key become: true - ansible.builtin.template: - src: private_key.j2 - dest: "/etc/sanoid/.ssh/id_sanoid" + ansible.builtin.file: + state: absent + path: "/etc/sanoid/.ssh/id_sanoid" owner: "{{ sanoid_user }}" group: "{{ sanoid_user_group }}" mode: "0400" @@ -15,7 +15,7 @@ become: true community.general.sudoers: name: "users-sudo-{{ sanoid_user }}" - state: present + state: absent user: "{{ sanoid_user }}" commands: ALL nopassword: true @@ -24,9 +24,9 @@ - name: template syncoid.service become: true - ansible.builtin.template: - src: "syncoid.service.j2" - dest: /etc/systemd/system/syncoid.service + ansible.builtin.file: + state: absent + path: /etc/systemd/system/syncoid.service owner: root group: root mode: "0644" @@ -37,9 +37,9 @@ - name: template syncoid.sh become: true - ansible.builtin.template: - src: "syncoid.sh.j2" - dest: /usr/bin/syncoid.sh + ansible.builtin.file: + state: absent + path: /usr/bin/syncoid.sh owner: root group: root mode: "0755" @@ -48,9 +48,9 @@ - name: template syncoid_mail.service become: true - ansible.builtin.template: - src: "syncoid_mail.service.j2" - dest: /etc/systemd/system/syncoid_mail.service + ansible.builtin.file: + state: absent + path: /etc/systemd/system/syncoid_mail.service owner: root group: root mode: "0644" @@ -61,9 +61,9 @@ - name: template syncoid.timer become: true - ansible.builtin.template: - src: "syncoid.timer.j2" - dest: "/etc/systemd/system/syncoid.timer" + ansible.builtin.file: + state: absent + path: "/etc/systemd/system/syncoid.timer" owner: root group: root mode: "0644" @@ -78,8 +78,10 @@ name: "syncoid.timer" enabled: true masked: false - state: started + state: absent notify: - systemctl daemon-reload when: - sanoid_syncoid_destination_host + +# remove package by hand diff --git a/roles/mgrote_zfs_sanoid/tasks/main.yml b/roles/mgrote_zfs_sanoid/tasks/main.yml index 30e0bbd1..cd5f0840 100644 --- a/roles/mgrote_zfs_sanoid/tasks/main.yml +++ b/roles/mgrote_zfs_sanoid/tasks/main.yml @@ -65,13 +65,13 @@ - sanoid.service - sanoid-prune.service -- name: include source-host tasks +- name: include source-host tasks # todo ansible.builtin.include_tasks: source.yml when: - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true - sanoid_syncoid_ssh_pubkey is defined -- name: include destination-host tasks +- name: include destination-host tasks # todo ansible.builtin.include_tasks: destination.yml when: - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true diff --git a/roles/mgrote_zfs_sanoid/tasks/source.yml b/roles/mgrote_zfs_sanoid/tasks/source.yml index e3d605d2..e2eb48b8 100644 --- a/roles/mgrote_zfs_sanoid/tasks/source.yml +++ b/roles/mgrote_zfs_sanoid/tasks/source.yml @@ -4,7 +4,7 @@ ansible.posix.authorized_key: user: "{{ sanoid_user }}" key: "{{ sanoid_syncoid_ssh_pubkey }}" - state: present + state: absent when: - sanoid_syncoid_source_host @@ -12,7 +12,7 @@ become: true community.general.sudoers: name: "users-sudo-{{ sanoid_user }}" - state: present + state: absent user: "{{ sanoid_user }}" commands: ALL nopassword: true -- 2.43.0 From 72e295e8a247a6334a9a2724d8bc6d46dbdb671b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:38:21 +0100 Subject: [PATCH 045/131] ff --- playbooks/3_service/pve.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/playbooks/3_service/pve.yml b/playbooks/3_service/pve.yml index f4ad0e36..388261c3 100644 --- a/playbooks/3_service/pve.yml +++ b/playbooks/3_service/pve.yml @@ -11,8 +11,8 @@ tags: "zfs_scrub" - role: mgrote_zfs_zed tags: "zfs_zed" -# - role: mgrote_zfs_sanoid # todo -# tags: "sanoid" + - role: mgrote_zfs_sanoid # todo + tags: "sanoid" - role: mgrote_smart tags: "smart" - role: mgrote_cv4pve_autosnap -- 2.43.0 From d22a0b93a026cc2a9949b1c4050c4d4ab18e5a8f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:40:08 +0100 Subject: [PATCH 046/131] ff --- roles/mgrote_zfs_sanoid/tasks/main.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/main.yml b/roles/mgrote_zfs_sanoid/tasks/main.yml index cd5f0840..4253d629 100644 --- a/roles/mgrote_zfs_sanoid/tasks/main.yml +++ b/roles/mgrote_zfs_sanoid/tasks/main.yml @@ -14,15 +14,14 @@ - sanoid state: present -- name: Overwrite syncoid script from package +- name: Overwrite syncoid script from package # todo become: true - ansible.builtin.get_url: - url: https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/syncoid + ansible.builtin.file: dest: /usr/bin/syncoid mode: '0755' owner: root group: root - force: true + state: absent - name: create sanoid directories become: true -- 2.43.0 From faa6a9104aee0ec1ce0486a2175fbe9f7faa66f2 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:42:12 +0100 Subject: [PATCH 047/131] df --- host_vars/pbs.mgrote.net.yml | 2 +- host_vars/pve5.mgrote.net.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 1705b673..2d11fed6 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -70,7 +70,7 @@ zfs_extra_zfs_pools: sanoid_snaps_enable: true ## syncoid -sanoid_syncoid_destination_host: false # kann weg +sanoid_syncoid_destination_host: true # kann weg sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" # kann weg sanoid_syncoid_timer: '*-*-* *:00:00' # jede Stunde # kann weg sanoid_syncoid_bwlimit: 50M # 30MB/s # kann weg diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index c01af5c6..57d7b128 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -100,7 +100,7 @@ zfs_extra_zfs_pools: ### mgrote_zfs_sanoid sanoid_snaps_enable: true ## enable sending snaps -sanoid_syncoid_source_host: false # kann weg +sanoid_syncoid_source_host: true # kann weg sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" # kann weg sanoid_datasets: -- 2.43.0 From 264fd56ee6b0d68eab92353dc6534f1dec6059b5 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:43:00 +0100 Subject: [PATCH 048/131] ff --- roles/mgrote_zfs_sanoid/tasks/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/main.yml b/roles/mgrote_zfs_sanoid/tasks/main.yml index 4253d629..d787c10c 100644 --- a/roles/mgrote_zfs_sanoid/tasks/main.yml +++ b/roles/mgrote_zfs_sanoid/tasks/main.yml @@ -68,10 +68,8 @@ ansible.builtin.include_tasks: source.yml when: - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true - - sanoid_syncoid_ssh_pubkey is defined - name: include destination-host tasks # todo ansible.builtin.include_tasks: destination.yml when: - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true - - sanoid_syncoid_ssh_privkey is defined -- 2.43.0 From b4c137727657d4bf4c3f5561fbe95aa83ba0ac58 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:44:01 +0100 Subject: [PATCH 049/131] dsfgsd --- roles/mgrote_zfs_sanoid/tasks/source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/source.yml b/roles/mgrote_zfs_sanoid/tasks/source.yml index e2eb48b8..0d2fcd1a 100644 --- a/roles/mgrote_zfs_sanoid/tasks/source.yml +++ b/roles/mgrote_zfs_sanoid/tasks/source.yml @@ -3,7 +3,7 @@ become: true ansible.posix.authorized_key: user: "{{ sanoid_user }}" - key: "{{ sanoid_syncoid_ssh_pubkey }}" + #key: "{{ sanoid_syncoid_ssh_pubkey }}" state: absent when: - sanoid_syncoid_source_host -- 2.43.0 From 811b3991cc8a04e9bdf9db4786cee1172899908e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:44:19 +0100 Subject: [PATCH 050/131] sdfg --- roles/mgrote_rsync/defaults/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index a655063e..166e3268 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -38,3 +38,4 @@ rsync_mirror_dirs: # "/" beachten! dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" ## todo ssh konfig in datei statt inline? +# nach host vars -- 2.43.0 From 2b3542dc42a7639e5d7ca58d25f4cbf3b4995bf6 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:45:02 +0100 Subject: [PATCH 051/131] sdfg --- roles/mgrote_zfs_sanoid/tasks/source.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/source.yml b/roles/mgrote_zfs_sanoid/tasks/source.yml index 0d2fcd1a..0544a5fd 100644 --- a/roles/mgrote_zfs_sanoid/tasks/source.yml +++ b/roles/mgrote_zfs_sanoid/tasks/source.yml @@ -1,12 +1,12 @@ --- -- name: template ssh public key - become: true - ansible.posix.authorized_key: - user: "{{ sanoid_user }}" +#- name: template ssh public key +# become: true +# ansible.posix.authorized_key: # TODO händisch loschen +# user: "{{ sanoid_user }}" #key: "{{ sanoid_syncoid_ssh_pubkey }}" - state: absent - when: - - sanoid_syncoid_source_host +# state: absent +# when: +# - sanoid_syncoid_source_host - name: Ensure user is added to sudoers become: true -- 2.43.0 From 776180625736a59fdc65876a5b418b0e3dd40f4d Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:46:26 +0100 Subject: [PATCH 052/131] dfdgf --- roles/mgrote_zfs_sanoid/tasks/destination.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/destination.yml b/roles/mgrote_zfs_sanoid/tasks/destination.yml index 7583e1c5..2b90d998 100644 --- a/roles/mgrote_zfs_sanoid/tasks/destination.yml +++ b/roles/mgrote_zfs_sanoid/tasks/destination.yml @@ -76,9 +76,9 @@ become: true ansible.builtin.systemd: name: "syncoid.timer" - enabled: true - masked: false - state: absent + enabled: false + masked: true + state: stopped notify: - systemctl daemon-reload when: -- 2.43.0 From 5b3596040414a333339c8f94e998f673ec37262f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:50:44 +0100 Subject: [PATCH 053/131] dd --- roles/mgrote_zfs_sanoid/tasks/destination.yml | 87 ------------------- roles/mgrote_zfs_sanoid/tasks/main.yml | 19 ---- roles/mgrote_zfs_sanoid/tasks/snaps.yml | 6 +- roles/mgrote_zfs_sanoid/tasks/source.yml | 20 ----- 4 files changed, 3 insertions(+), 129 deletions(-) delete mode 100644 roles/mgrote_zfs_sanoid/tasks/destination.yml delete mode 100644 roles/mgrote_zfs_sanoid/tasks/source.yml diff --git a/roles/mgrote_zfs_sanoid/tasks/destination.yml b/roles/mgrote_zfs_sanoid/tasks/destination.yml deleted file mode 100644 index 2b90d998..00000000 --- a/roles/mgrote_zfs_sanoid/tasks/destination.yml +++ /dev/null @@ -1,87 +0,0 @@ ---- -- name: template ssh private key - become: true - ansible.builtin.file: - state: absent - path: "/etc/sanoid/.ssh/id_sanoid" - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - mode: "0400" - no_log: true - when: - - sanoid_syncoid_destination_host - -- name: Ensure user is added to sudoers - become: true - community.general.sudoers: - name: "users-sudo-{{ sanoid_user }}" - state: absent - user: "{{ sanoid_user }}" - commands: ALL - nopassword: true - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.service - become: true - ansible.builtin.file: - state: absent - path: /etc/systemd/system/syncoid.service - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.sh - become: true - ansible.builtin.file: - state: absent - path: /usr/bin/syncoid.sh - owner: root - group: root - mode: "0755" - when: - - sanoid_syncoid_destination_host - -- name: template syncoid_mail.service - become: true - ansible.builtin.file: - state: absent - path: /etc/systemd/system/syncoid_mail.service - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: template syncoid.timer - become: true - ansible.builtin.file: - state: absent - path: "/etc/systemd/system/syncoid.timer" - owner: root - group: root - mode: "0644" - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -- name: enable syncoid.timer - become: true - ansible.builtin.systemd: - name: "syncoid.timer" - enabled: false - masked: true - state: stopped - notify: - - systemctl daemon-reload - when: - - sanoid_syncoid_destination_host - -# remove package by hand diff --git a/roles/mgrote_zfs_sanoid/tasks/main.yml b/roles/mgrote_zfs_sanoid/tasks/main.yml index d787c10c..4b664e80 100644 --- a/roles/mgrote_zfs_sanoid/tasks/main.yml +++ b/roles/mgrote_zfs_sanoid/tasks/main.yml @@ -14,15 +14,6 @@ - sanoid state: present -- name: Overwrite syncoid script from package # todo - become: true - ansible.builtin.file: - dest: /usr/bin/syncoid - mode: '0755' - owner: root - group: root - state: absent - - name: create sanoid directories become: true ansible.builtin.file: @@ -63,13 +54,3 @@ loop: - sanoid.service - sanoid-prune.service - -- name: include source-host tasks # todo - ansible.builtin.include_tasks: source.yml - when: - - sanoid_syncoid_source_host is defined and sanoid_syncoid_source_host is true - -- name: include destination-host tasks # todo - ansible.builtin.include_tasks: destination.yml - when: - - sanoid_syncoid_destination_host is defined and sanoid_syncoid_destination_host is true diff --git a/roles/mgrote_zfs_sanoid/tasks/snaps.yml b/roles/mgrote_zfs_sanoid/tasks/snaps.yml index 5a6b6aac..e1fd4c12 100644 --- a/roles/mgrote_zfs_sanoid/tasks/snaps.yml +++ b/roles/mgrote_zfs_sanoid/tasks/snaps.yml @@ -1,5 +1,5 @@ --- -- name: Generate Sanoid Configuration +- name: Template sanoid configuration become: true ansible.builtin.template: src: sanoid.conf.j2 @@ -8,7 +8,7 @@ group: "{{ sanoid_user_group }}" mode: "0400" -- name: template sanoid_mail.service +- name: Template sanoid_mail.service become: true ansible.builtin.template: src: "sanoid_mail.service.j2" @@ -30,7 +30,7 @@ notify: - systemctl daemon-reload -- name: set timer +- name: add timer overrides become: true ansible.builtin.blockinfile: create: true diff --git a/roles/mgrote_zfs_sanoid/tasks/source.yml b/roles/mgrote_zfs_sanoid/tasks/source.yml deleted file mode 100644 index 0544a5fd..00000000 --- a/roles/mgrote_zfs_sanoid/tasks/source.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -#- name: template ssh public key -# become: true -# ansible.posix.authorized_key: # TODO händisch loschen -# user: "{{ sanoid_user }}" - #key: "{{ sanoid_syncoid_ssh_pubkey }}" -# state: absent -# when: -# - sanoid_syncoid_source_host - -- name: Ensure user is added to sudoers - become: true - community.general.sudoers: - name: "users-sudo-{{ sanoid_user }}" - state: absent - user: "{{ sanoid_user }}" - commands: ALL - nopassword: true - when: - - sanoid_syncoid_source_host -- 2.43.0 From 83261c076784897bb4eb7c18c41414a1dbacf620 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:50:53 +0100 Subject: [PATCH 054/131] dfgdf --- roles/mgrote_zfs_sanoid/tasks/user.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/tasks/user.yml b/roles/mgrote_zfs_sanoid/tasks/user.yml index 541c63a2..78d06f2b 100644 --- a/roles/mgrote_zfs_sanoid/tasks/user.yml +++ b/roles/mgrote_zfs_sanoid/tasks/user.yml @@ -1,5 +1,5 @@ --- -- name: ensure group exists +- name: Ensure group exists become: true ansible.builtin.group: name: "{{ sanoid_user_group }}" @@ -8,7 +8,7 @@ - sanoid_user_group is defined - sanoid_user is defined -- name: ensure user exists +- name: Ensure user exists become: true ansible.builtin.user: name: "{{ sanoid_user }}" -- 2.43.0 From 8b71710e7e22f7df21d5b92127bcb6054238cdc2 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:52:28 +0100 Subject: [PATCH 055/131] sdfgsd --- host_vars/pbs-test.mgrote.net.yml | 68 ------------------------------- host_vars/pbs.mgrote.net.yml | 68 ------------------------------- host_vars/pve5.mgrote.net.yml | 4 -- 3 files changed, 140 deletions(-) diff --git a/host_vars/pbs-test.mgrote.net.yml b/host_vars/pbs-test.mgrote.net.yml index 31ffe738..be8a5bc8 100644 --- a/host_vars/pbs-test.mgrote.net.yml +++ b/host_vars/pbs-test.mgrote.net.yml @@ -74,74 +74,6 @@ zfs_extra_zfs_pools: ### mgrote_zfs_sanoid sanoid_snaps_enable: true - -## syncoid -sanoid_syncoid_destination_host: false -sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" -sanoid_syncoid_timer: '*-*-* *:00:00' # jede Stunde -sanoid_syncoid_bwlimit: 30m # 30MB/s -sanoid_syncoid_datasets_sync: - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/pve_backup - source_dataset: hdd_data/pve_backup - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/videos - source_dataset: hdd_data/videos - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/music - source_dataset: hdd_data/music - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/tmp - source_dataset: hdd_data/tmp - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/archiv - source_dataset: hdd_data/archiv - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/bilder - source_dataset: hdd_data/bilder - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/scans - source_dataset: hdd_data/scans - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/restic - source_dataset: hdd_data/restic - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/backup - source_dataset: hdd_data/backup - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/buecher - source_dataset: hdd_data/buecher - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/programme - source_dataset: hdd_data/programme - - - source_host: pve5.mgrote.net - destination_mount_check: backup - destination_dataset: backup/pve5/vm - source_dataset: hdd_data/vm - -# sanoid sanoid_datasets: ### rpool - path: rpool diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 2d11fed6..6684600d 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -68,74 +68,6 @@ zfs_extra_zfs_pools: ### mgrote_zfs_sanoid sanoid_snaps_enable: true - -## syncoid -sanoid_syncoid_destination_host: true # kann weg -sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" # kann weg -sanoid_syncoid_timer: '*-*-* *:00:00' # jede Stunde # kann weg -sanoid_syncoid_bwlimit: 50M # 30MB/s # kann weg -sanoid_syncoid_datasets_sync: # kann weg - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/pve_backup - source_dataset: hdd_data/pve_backup - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/videos - source_dataset: hdd_data/videos - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/music - source_dataset: hdd_data/music - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/tmp - source_dataset: hdd_data/tmp - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/archiv - source_dataset: hdd_data/archiv - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/bilder - source_dataset: hdd_data/bilder - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/scans - source_dataset: hdd_data/scans - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/restic - source_dataset: hdd_data/restic - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/backup - source_dataset: hdd_data/backup - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/buecher - source_dataset: hdd_data/buecher - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/programme - source_dataset: hdd_data/programme - - - source_host: 192.168.2.16 # pve5, weil pbs den fqdn nicht auflösen kann - destination_mount_check: backup - destination_dataset: backup/pve5/vm - source_dataset: hdd_data/vm - -# sanoid sanoid_datasets: ### rpool - path: rpool diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 57d7b128..4ab4446a 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -99,10 +99,6 @@ zfs_extra_zfs_pools: ### mgrote_zfs_sanoid sanoid_snaps_enable: true -## enable sending snaps -sanoid_syncoid_source_host: true # kann weg -sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" # kann weg - sanoid_datasets: ### hdd_data - path: 'hdd_data/videos' -- 2.43.0 From c90dab18bfbe9c96f42f8276f13d8360402151fa Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:53:55 +0100 Subject: [PATCH 056/131] dfg --- roles/mgrote_zfs_sanoid/defaults/main.yml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/defaults/main.yml b/roles/mgrote_zfs_sanoid/defaults/main.yml index 78cf8310..a76ddae5 100644 --- a/roles/mgrote_zfs_sanoid/defaults/main.yml +++ b/roles/mgrote_zfs_sanoid/defaults/main.yml @@ -1,8 +1,6 @@ --- ### when should sanoid be run (every 5 minutes) sanoid_timer: '*-*-* *:00/5' -### when should syncoid be run -sanoid_syncoid_timer: '*-*-* *:00:00' # ### "Default" Datasets # sanoid_datasets: # dictionary @@ -32,18 +30,3 @@ sanoid_user_group: sanoid ### enable/disable features ## enable snapshotting # sanoid_snaps_enable: true -## enable sending snaps -# sanoid_syncoid_source_host: true -## enable receiving snaps -# sanoid_syncoid_destination_host: true - -# syncoid -#sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" -#sanoid_syncoid_ssh_pubkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_public_key', 'notes') }}" - -### mgrote_sanoid -#sanoid_syncoid_datasets_sync: -# - source_host: pve5.mgrote.net -# source_dataset: hdd_data/tmp -# destination_mount_check: hdd_data/tmp # zielpool -# destination_dataset: backup/pve5/tmp -- 2.43.0 From e3c0aec81c2432c0bab22043623cd67a93eed7da Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:55:46 +0100 Subject: [PATCH 057/131] sdfsa --- group_vars/all.yml | 41 ++++++++++++++ host_vars/pve5.mgrote.net.yml | 31 +++++++++++ roles/mgrote_rsync/defaults/main.yml | 80 ++++++++++++++-------------- 3 files changed, 111 insertions(+), 41 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 0764c61d..a9f9a8a7 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -247,6 +247,47 @@ munin_node_plugins: env.config_dir /etc/fail2ban user root +### mgrote_sync (für pbs + pve) +rsync_mirror_user_group: "{{ rsync_mirror_user }}" +rsync_mirror_user: rsync_mirror +rsync_mirror_bw_limit: "2m" # 2 Megabytes +rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 + +rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" +rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" + +rsync_mirror_dirs: # "/" beachten! +- src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +- src: hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" +- src: hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" +- src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +- src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +- src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +- src: hdd_data/papa_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" +- src: hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +- src: hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +- src: hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +- src: hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +- src: hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +- src: hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +- src: hdd_data/vm + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" + + + # Ansible Variablen ### User ansible_user: "ansible-user" diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 4ab4446a..83b03548 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -231,3 +231,34 @@ pve_pbs_datastore: username: user_pve5@pbs password: "{{ lookup('viczem.keepass.keepass', 'pbs_pve_user', 'password') }}" fingerprint: "7F:AC:54:75:1C:33:55:84:1E:1E:3A:15:5A:5E:AF:79:33:C9:D4:E1:C0:A0:1C:0D:9E:6A:EA:82:F9:27:57:79" + +### mgrote_sync +rsync_mirror_dirs: # "/" beachten! +- src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +- src: hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" +- src: hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" +- src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +- src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +- src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +- src: hdd_data/papa_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" +- src: hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +- src: hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +- src: hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +- src: hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +- src: hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +- src: hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +- src: hdd_data/vm + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 166e3268..8031a63a 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -1,41 +1,39 @@ ---- -rsync_mirror_user_group: "{{ rsync_mirror_user }}" -rsync_mirror_user: rsync_mirror -rsync_mirror_bw_limit: "2m" # 2 Megabytes -rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 - -rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" -rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" - -rsync_mirror_dirs: # "/" beachten! -- src: /hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/archiv - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" -- src: hdd_data/backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" -- src: hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" -- src: hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" -- src: hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -- src: hdd_data/papa_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" -- src: hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -- src: hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -- src: hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -- src: hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -- src: hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -- src: hdd_data/vm - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" - -## todo ssh konfig in datei statt inline? -# nach host vars +# --- +# rsync_mirror_user_group: "{{ rsync_mirror_user }}" +# rsync_mirror_user: rsync_mirror +# rsync_mirror_bw_limit: "2m" # 2 Megabytes +# rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 +# +# rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" +# rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" +# +# rsync_mirror_dirs: # "/" beachten! +# - src: /hdd_data/tmp +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +# - src: hdd_data/archiv +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" +# - src: hdd_data/backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" +# - src: hdd_data/bilder +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +# - src: hdd_data/buecher +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +# - src: hdd_data/music +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +# - src: hdd_data/papa_backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" +# - src: hdd_data/programme +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +# - src: hdd_data/pve_backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +# - src: hdd_data/restic +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +# - src: hdd_data/scans +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +# - src: hdd_data/tmp +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +# - src: hdd_data/videos +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +# - src: hdd_data/vm +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" +# -- 2.43.0 From 39e27e5941d3c2a1bdc4e2da191408f4e0de30d7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 14:59:17 +0100 Subject: [PATCH 058/131] sdfg --- group_vars/all.yml | 32 -------------- host_vars/pbs.mgrote.net.yml | 3 -- host_vars/pve5.mgrote.net.yml | 56 ++++++++++++------------- roles/mgrote_rsync/defaults/main.yml | 1 - roles/mgrote_zfs_sanoid/tasks/snaps.yml | 2 +- 5 files changed, 29 insertions(+), 65 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index a9f9a8a7..50ff39ef 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -256,38 +256,6 @@ rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -rsync_mirror_dirs: # "/" beachten! -- src: /hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/archiv - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" -- src: hdd_data/backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" -- src: hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" -- src: hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" -- src: hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -- src: hdd_data/papa_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" -- src: hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -- src: hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -- src: hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -- src: hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -- src: hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -- src: hdd_data/vm - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" - - - # Ansible Variablen ### User ansible_user: "ansible-user" diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 6684600d..762aaf50 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -88,7 +88,4 @@ sanoid_datasets: snapshots: true template: '3tage' - - - ## todo snap für dataset in backup aktivieren diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 83b03548..a8f47106 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -234,31 +234,31 @@ pve_pbs_datastore: ### mgrote_sync rsync_mirror_dirs: # "/" beachten! -- src: /hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/archiv - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" -- src: hdd_data/backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" -- src: hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" -- src: hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" -- src: hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -- src: hdd_data/papa_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" -- src: hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -- src: hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -- src: hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -- src: hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -- src: hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -- src: hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -- src: hdd_data/vm - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" + - src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" + - src: hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" + - src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" + - src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" + - src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" + - src: hdd_data/papa_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" + - src: hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" + - src: hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" + - src: hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" + - src: hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" + - src: hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" + - src: hdd_data/vm + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 8031a63a..6b3a704b 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -36,4 +36,3 @@ # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" # - src: hdd_data/vm # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" -# diff --git a/roles/mgrote_zfs_sanoid/tasks/snaps.yml b/roles/mgrote_zfs_sanoid/tasks/snaps.yml index e1fd4c12..47b3b049 100644 --- a/roles/mgrote_zfs_sanoid/tasks/snaps.yml +++ b/roles/mgrote_zfs_sanoid/tasks/snaps.yml @@ -30,7 +30,7 @@ notify: - systemctl daemon-reload -- name: add timer overrides +- name: add timer overrides become: true ansible.builtin.blockinfile: create: true -- 2.43.0 From a25e32ddaebdee7fbaa985588b2acdb4249ba7bb Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:04:20 +0100 Subject: [PATCH 059/131] dd --- host_vars/pbs.mgrote.net.yml | 95 ++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 762aaf50..132c06ba 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -50,7 +50,7 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet - 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 + 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 @@ -58,6 +58,45 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet - dataset: backup/pve5 state: present canmount: off # noqa yaml[truthy] + state: present + 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/papa_backup + state: present + - 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: present # 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: @@ -87,5 +126,55 @@ sanoid_datasets: recursive: 'no' snapshots: true template: '3tage' - -## todo snap für dataset in backup aktivieren + - path: 'backup/pve5/videos' + template: '14tage' + recursive: 'yes' + snapshots: true + - path: 'backup/pve5/music' + template: '14tage' + recursive: 'yes' + snapshots: true + - path: 'backup/pve5/papa_backup' + 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' + - path: backup/pve5/vm + recursive: 'no' # noqa yaml[truthy] + snapshots: true + template: '14tage' -- 2.43.0 From ae778a77d4dee23fe71b4e0dcfb76a6aa10e5f83 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:05:15 +0100 Subject: [PATCH 060/131] ff --- host_vars/pbs.mgrote.net.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 132c06ba..0222170d 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -58,7 +58,6 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet - dataset: backup/pve5 state: present canmount: off # noqa yaml[truthy] - state: present compression: zstd sync: disabled xattr: sa -- 2.43.0 From a2bd9198a6e14cbffa95ef11ce0425196c4d972f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:06:40 +0100 Subject: [PATCH 061/131] dfghf --- host_vars/pbs.mgrote.net.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 0222170d..3d96e092 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -67,7 +67,7 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet 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/papa_backup - state: present + state: absent # todo - dataset: backup/pve5/pve_backup state: present recordsize: 1M -- 2.43.0 From d1f61a43b6d0cc9b5a30e9837889f584e0e88573 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:07:04 +0100 Subject: [PATCH 062/131] fdgd --- host_vars/pbs.mgrote.net.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 3d96e092..a8471dee 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -66,8 +66,6 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet 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/papa_backup - state: absent # todo - dataset: backup/pve5/pve_backup state: present recordsize: 1M -- 2.43.0 From 0cf05a6446ed12e60648ab4c44212b8faa3a9e7a Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:07:37 +0100 Subject: [PATCH 063/131] dfg --- host_vars/pbs.mgrote.net.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index a8471dee..5290b980 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -50,7 +50,7 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet - 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 + 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 @@ -65,7 +65,7 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet 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 + 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 -- 2.43.0 From b03aa0159d8ab0f87e3809501ae2d109a2d0b3e6 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:09:22 +0100 Subject: [PATCH 064/131] fgh --- host_vars/pbs.mgrote.net.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 5290b980..9aaee235 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -131,10 +131,6 @@ sanoid_datasets: template: '14tage' recursive: 'yes' snapshots: true - - path: 'backup/pve5/papa_backup' - template: '14tage' - recursive: 'yes' - snapshots: true - path: 'backup/pve5/tmp' template: '14tage' recursive: 'yes' -- 2.43.0 From 1c2421211410ac487b802642d44c8dca9ead9dde Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:10:59 +0100 Subject: [PATCH 065/131] dfg --- host_vars/pve5.mgrote.net.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index a8f47106..5fa6dc6b 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -246,8 +246,6 @@ rsync_mirror_dirs: # "/" beachten! dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - src: hdd_data/music dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" - - src: hdd_data/papa_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" - src: hdd_data/programme dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - src: hdd_data/pve_backup -- 2.43.0 From b0b751c90e97d53da69f18dd55424a4b4d7bc69e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:12:08 +0100 Subject: [PATCH 066/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index f58b7ebf..867f4dec 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -5,7 +5,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} -echo "-----------------------" +echo "" {% endfor %} -- 2.43.0 From 6568a6a46f9d4a2a99244747742e2767851f63b8 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:12:30 +0100 Subject: [PATCH 067/131] dfg --- playbooks/3_service/pve.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playbooks/3_service/pve.yml b/playbooks/3_service/pve.yml index 388261c3..345250a4 100644 --- a/playbooks/3_service/pve.yml +++ b/playbooks/3_service/pve.yml @@ -11,7 +11,7 @@ tags: "zfs_scrub" - role: mgrote_zfs_zed tags: "zfs_zed" - - role: mgrote_zfs_sanoid # todo + - role: mgrote_zfs_sanoid tags: "sanoid" - role: mgrote_smart tags: "smart" -- 2.43.0 From 90053e8357054003110d10ab8666e74426cd806b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:13:14 +0100 Subject: [PATCH 068/131] dfg --- roles/mgrote_rsync/tasks/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index a3bdb9a6..c45a5894 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -18,5 +18,5 @@ name: "users-sudo-{{ rsync_mirror_user }}" state: present user: "{{ rsync_mirror_user }}" - commands: ALL # TODO einschränken? + commands: ALL nopassword: true -- 2.43.0 From 52b867f057d94089801d4ebd564f209861ed8161 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:14:19 +0100 Subject: [PATCH 069/131] dsfgd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 867f4dec..aa1df64d 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,3 +10,8 @@ echo "" # --checksum ; https://serverfault.com/questions/211005/rsync-difference-between-checksum-and-ignore-times-options + +# TODO +# check if src und dest are mounted +# # check if target dataset is mounted +/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} 2>&1 > /dev/null || echo "Pool not mounted!" -- 2.43.0 From e39c554ae5efeeb532e905d78e71134fb8dc77f4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:26:18 +0100 Subject: [PATCH 070/131] dd --- host_vars/pve5.mgrote.net.yml | 13 +++++++++++++ roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 15 +++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 5fa6dc6b..e5d66373 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -236,27 +236,40 @@ pve_pbs_datastore: rsync_mirror_dirs: # "/" beachten! - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + dest_mount_check: - src: hdd_data/archiv dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" + dest_mount_check: - src: hdd_data/backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" + dest_mount_check: - src: hdd_data/bilder dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" + dest_mount_check: - src: hdd_data/buecher dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" + dest_mount_check: - src: hdd_data/music dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" + dest_mount_check: - src: hdd_data/programme dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" + dest_mount_check: - src: hdd_data/pve_backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" + dest_mount_check: - src: hdd_data/restic dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" + dest_mount_check: - src: hdd_data/scans dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" + dest_mount_check: - src: hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + dest_mount_check: - src: hdd_data/videos dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" + dest_mount_check: - src: hdd_data/vm dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" + dest_mount_check: diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index aa1df64d..bcfaefcf 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -2,9 +2,20 @@ {{ file_header | default () }} {% for item in rsync_mirror_dirs %} +{# Header #} echo "-----------------------" echo "Source: {{ item.src }}" -rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} +{# Mount check source #} +if /usr/sbin/zfs get mounted -H {{ item.src } ; then + {# Mount check destination #} + if [ $(ssh {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3) -eq "yes" ] ; then + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + else + echo "Destination-Dataset not mounted!" + fi +else + echo "Source-Dataset not mounted!" +fi echo "" {% endfor %} @@ -14,4 +25,4 @@ echo "" # TODO # check if src und dest are mounted # # check if target dataset is mounted -/usr/sbin/zfs get mounted -H {{ item.destination_mount_check }} 2>&1 > /dev/null || echo "Pool not mounted!" +/usr/sbin/zfs get mounted -H hdd_data/tmp 2>&1 > /dev/null || echo "Dataset not mounted!" -- 2.43.0 From 804366f8c6c7ee0b14b1fbf1e8c8b2f39989c8f9 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:28:56 +0100 Subject: [PATCH 071/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index bcfaefcf..a850d762 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -6,7 +6,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src } ; then +if /usr/sbin/zfs get mounted -H {{ item.src }} ; then {# Mount check destination #} if [ $(ssh {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3) -eq "yes" ] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} -- 2.43.0 From 4e7738b6e0ae595547025587268f981058039aaa Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:29:45 +0100 Subject: [PATCH 072/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 5 ----- 1 file changed, 5 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index a850d762..55115d74 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -21,8 +21,3 @@ echo "" # --checksum ; https://serverfault.com/questions/211005/rsync-difference-between-checksum-and-ignore-times-options - -# TODO -# check if src und dest are mounted -# # check if target dataset is mounted -/usr/sbin/zfs get mounted -H hdd_data/tmp 2>&1 > /dev/null || echo "Dataset not mounted!" -- 2.43.0 From 4fd2f586eb7a0d71b0ac0c060c41f2c8129810fe Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:30:04 +0100 Subject: [PATCH 073/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 1 - 1 file changed, 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 55115d74..0f9976e0 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -16,7 +16,6 @@ if /usr/sbin/zfs get mounted -H {{ item.src }} ; then else echo "Source-Dataset not mounted!" fi -echo "" {% endfor %} -- 2.43.0 From 7d888ae6d171cfa2f73e114e38810bf13f59926d Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:31:20 +0100 Subject: [PATCH 074/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 0f9976e0..2c64c533 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -8,7 +8,7 @@ echo "Source: {{ item.src }}" {# Mount check source #} if /usr/sbin/zfs get mounted -H {{ item.src }} ; then {# Mount check destination #} - if [ $(ssh {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3) -eq "yes" ] ; then + if [ $(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3) -eq "yes" ] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" -- 2.43.0 From 10bdc4e5fb4436c59e854504deae483a65339743 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:31:37 +0100 Subject: [PATCH 075/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 2c64c533..44a88a06 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -20,3 +20,6 @@ fi # --checksum ; https://serverfault.com/questions/211005/rsync-difference-between-checksum-and-ignore-times-options + + +# beispiel cmd hier rein -- 2.43.0 From fc16e42791de873d2bb16471dc9b59f905741c58 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:32:36 +0100 Subject: [PATCH 076/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 44a88a06..bab90a38 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -8,7 +8,7 @@ echo "Source: {{ item.src }}" {# Mount check source #} if /usr/sbin/zfs get mounted -H {{ item.src }} ; then {# Mount check destination #} - if [ $(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3) -eq "yes" ] ; then + if [ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" -- 2.43.0 From f2b729f8f973331711936ec4c4b07efb6e44c1d4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:35:58 +0100 Subject: [PATCH 077/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index bab90a38..f128fa49 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -6,9 +6,9 @@ echo "-----------------------" echo "Source: {{ item.src }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src }} ; then +if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} - if [ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ] ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" -- 2.43.0 From c529872231d1f6ade5445f46a581fd6ad2141c56 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:36:31 +0100 Subject: [PATCH 078/131] dfg --- host_vars/pve5.mgrote.net.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index e5d66373..5fa6dc6b 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -236,40 +236,27 @@ pve_pbs_datastore: rsync_mirror_dirs: # "/" beachten! - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - dest_mount_check: - src: hdd_data/archiv dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - dest_mount_check: - src: hdd_data/backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - dest_mount_check: - src: hdd_data/bilder dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" - dest_mount_check: - src: hdd_data/buecher dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - dest_mount_check: - src: hdd_data/music dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" - dest_mount_check: - src: hdd_data/programme dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - dest_mount_check: - src: hdd_data/pve_backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" - dest_mount_check: - src: hdd_data/restic dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" - dest_mount_check: - src: hdd_data/scans dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" - dest_mount_check: - src: hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - dest_mount_check: - src: hdd_data/videos dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" - dest_mount_check: - src: hdd_data/vm dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" - dest_mount_check: -- 2.43.0 From fd312b7efed9ff6d6231283e4ff38626d2c2d78b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:37:10 +0100 Subject: [PATCH 079/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index f128fa49..ad31feb5 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -9,7 +9,7 @@ echo "Source: {{ item.src }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From c89e8e3bbec6f444e94931c960ebf74de58637f9 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:38:09 +0100 Subject: [PATCH 080/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index ad31feb5..25585a60 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -9,7 +9,7 @@ echo "Source: {{ item.src }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --human-readable --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --human-readable --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From 95c763b3e568e193dacc69ecfdbb773dab0291ca Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:38:51 +0100 Subject: [PATCH 081/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 25585a60..3e95393d 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -9,7 +9,7 @@ echo "Source: {{ item.src }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --human-readable --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From 7b833b35d5473a3369cc2a1d22d4a89eee335500 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:43:06 +0100 Subject: [PATCH 082/131] sdf --- host_vars/pve5.mgrote.net.yml | 52 +++++++++---------- .../mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 + 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 5fa6dc6b..dabcf1c5 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -234,29 +234,29 @@ pve_pbs_datastore: ### mgrote_sync rsync_mirror_dirs: # "/" beachten! - - src: /hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: hdd_data/archiv - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - - src: hdd_data/backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - - src: hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" - - src: hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - - src: hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" - - src: hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - - src: hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" - - src: hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" - - src: hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" - - src: hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" - - src: hdd_data/vm - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" + - src: /hdd_data/tmp/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/"$ + - src: hdd_data/archiv/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv/"$ + - src: hdd_data/backup/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup/"$ + - src: hdd_data/bilder/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder/"$ + - src: hdd_data/buecher/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher/"$ + - src: hdd_data/music/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music/"$ + - src: hdd_data/programme/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme/"$ + - src: hdd_data/pve_backup/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup/"$ + - src: hdd_data/restic/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic/"$ + - src: hdd_data/scans/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans/"$ + - src: hdd_data/tmp/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/"$ + - src: hdd_data/videos/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos/"$ + - src: hdd_data/vm/ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm/"$ diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 3e95393d..c988a6a7 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -23,3 +23,5 @@ fi # beispiel cmd hier rein + +# --itemize-changes -- 2.43.0 From 3782369cb57cd0e39d6a7f5afd2d72c01eee31ac Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:43:45 +0100 Subject: [PATCH 083/131] sdf --- host_vars/pve5.mgrote.net.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index dabcf1c5..4dc12041 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -235,28 +235,28 @@ pve_pbs_datastore: ### mgrote_sync rsync_mirror_dirs: # "/" beachten! - src: /hdd_data/tmp/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/" - src: hdd_data/archiv/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv/" - src: hdd_data/backup/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup/" - src: hdd_data/bilder/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder/" - src: hdd_data/buecher/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher/" - src: hdd_data/music/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music/" - src: hdd_data/programme/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme/" - src: hdd_data/pve_backup/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup/" - src: hdd_data/restic/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic/" - src: hdd_data/scans/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans/" - src: hdd_data/tmp/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/" - src: hdd_data/videos/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos/" - src: hdd_data/vm/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm/"$ + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm/" -- 2.43.0 From 7ce078c7a8f6747c04592651c0984454f13994f2 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:44:06 +0100 Subject: [PATCH 084/131] dfg --- host_vars/pve5.mgrote.net.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 4dc12041..5c37a93e 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -233,7 +233,7 @@ pve_pbs_datastore: fingerprint: "7F:AC:54:75:1C:33:55:84:1E:1E:3A:15:5A:5E:AF:79:33:C9:D4:E1:C0:A0:1C:0D:9E:6A:EA:82:F9:27:57:79" ### mgrote_sync -rsync_mirror_dirs: # "/" beachten! +rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" am Ende - src: /hdd_data/tmp/ dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/" - src: hdd_data/archiv/ -- 2.43.0 From cb002856d805f6db2adb11e7730a11ec2923295f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:46:37 +0100 Subject: [PATCH 085/131] sdf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index c988a6a7..774e952a 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -5,6 +5,7 @@ {# Header #} echo "-----------------------" echo "Source: {{ item.src }}" +echo "Dest: {{ item.dest.split(':') | last }}" {# Mount check source #} if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} @@ -25,3 +26,5 @@ fi # beispiel cmd hier rein # --itemize-changes + +# rsync: [generator] failed to set times on "/backup/pve5/tmp/.": Operation not permitted (1) -- 2.43.0 From 92b9ce79dab1408edccfb1b65836531f83f2f899 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:46:55 +0100 Subject: [PATCH 086/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 774e952a..11441c46 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -5,7 +5,7 @@ {# Header #} echo "-----------------------" echo "Source: {{ item.src }}" -echo "Dest: {{ item.dest.split(':') | last }}" +echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} -- 2.43.0 From 7f3a6c817a6b172b23b8b56aee3f0364605c3987 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:48:06 +0100 Subject: [PATCH 087/131] dd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 11441c46..1cb9cbf9 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From 840037aa4619535aa5435a07c45f573c96deedbd Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:52:40 +0100 Subject: [PATCH 088/131] sdfg --- .../mgrote_rsync/templates/rsync_mirror.sh.j2 | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 1cb9cbf9..e499c4a1 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" fi @@ -19,12 +19,15 @@ else fi {% endfor %} - -# --checksum ; https://serverfault.com/questions/211005/rsync-difference-between-checksum-and-ignore-times-options - - -# beispiel cmd hier rein - -# --itemize-changes - -# rsync: [generator] failed to set times on "/backup/pve5/tmp/.": Operation not permitted (1) +{# Beispiel +echo "-----------------------" +echo "Source: /hdd_data/tmp/" +if /usr/sbin/zfs get mounted -H /hdd_data/tmp/ 2>&1 > /dev/null ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no rsync_mirror@pbs.mgrote.net /usr/sbin/zfs get mounted -H /backup/pve5/tmp | cut -f3)" -eq "yes" ]] ; then + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --itemize-changes --bwlimit=2m --verbose --omit-dir-times --archive --human-readable --stats --compress --fuzzy --force --delete-after --recursive /hdd_data/tmp/ rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp/ + else + echo "Destination-Dataset not mounted!" + fi +else + echo "Source-Dataset not mounted!" +fi#} -- 2.43.0 From b449bcc6ab2dbcdf4cf7b55f6ab472d5e4f7a499 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:55:11 +0100 Subject: [PATCH 089/131] ddd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index e499c4a1..54c77908 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -4,12 +4,12 @@ {% for item in rsync_mirror_dirs %} {# Header #} echo "-----------------------" -echo "Source: {{ item.src }}" -echo "Destination: {{ item.dest.split(':') | last }}" +echo "Source: {{ item.src | regex_replace('\\/$', '' }}" +echo "Destination: {{ item.dest.split(':') | last | regex_replace('\\/$', '' }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then +if /usr/sbin/zfs get mounted -H {{ item.src | regex_replace('\\/$', '' }} 2>&1 > /dev/null ; then {# Mount check destination #} - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('\\/$', '' }} | cut -f3)" -eq "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" -- 2.43.0 From 9dd59bf76e2a34c3de439ab997954712d29d93ab Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:56:26 +0100 Subject: [PATCH 090/131] ff --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 54c77908..aead06c3 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -4,12 +4,12 @@ {% for item in rsync_mirror_dirs %} {# Header #} echo "-----------------------" -echo "Source: {{ item.src | regex_replace('\\/$', '' }}" -echo "Destination: {{ item.dest.split(':') | last | regex_replace('\\/$', '' }}" +echo "Source: {{ item.src | regex_replace('\\/$', '') }}" +echo "Destination: {{ item.dest.split(':') | last | regex_replace('\\/$', '') }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src | regex_replace('\\/$', '' }} 2>&1 > /dev/null ; then +if /usr/sbin/zfs get mounted -H {{ item.src | regex_replace('\\/$', '') }} 2>&1 > /dev/null ; then {# Mount check destination #} - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('\\/$', '' }} | cut -f3)" -eq "yes" ]] ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('\\/$', '') }} | cut -f3)" -eq "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} else echo "Destination-Dataset not mounted!" -- 2.43.0 From 555d483ae0f8b309cc0881abcf3619af5aba615c Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:58:51 +0100 Subject: [PATCH 091/131] dsfg --- host_vars/pve5.mgrote.net.yml | 54 +++++++++---------- .../mgrote_rsync/templates/rsync_mirror.sh.j2 | 10 ++-- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 5c37a93e..705c5278 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -233,30 +233,30 @@ pve_pbs_datastore: fingerprint: "7F:AC:54:75:1C:33:55:84:1E:1E:3A:15:5A:5E:AF:79:33:C9:D4:E1:C0:A0:1C:0D:9E:6A:EA:82:F9:27:57:79" ### mgrote_sync -rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" am Ende - - src: /hdd_data/tmp/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/" - - src: hdd_data/archiv/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv/" - - src: hdd_data/backup/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup/" - - src: hdd_data/bilder/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder/" - - src: hdd_data/buecher/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher/" - - src: hdd_data/music/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music/" - - src: hdd_data/programme/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme/" - - src: hdd_data/pve_backup/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup/" - - src: hdd_data/restic/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic/" - - src: hdd_data/scans/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans/" - - src: hdd_data/tmp/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp/" - - src: hdd_data/videos/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos/" - - src: hdd_data/vm/ - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm/" +rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende + - src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" + - src: hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" + - src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" + - src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" + - src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" + - src: hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" + - src: hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" + - src: hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" + - src: hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" + - src: hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" + - src: hdd_data/vm + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index aead06c3..da58c15f 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -4,13 +4,13 @@ {% for item in rsync_mirror_dirs %} {# Header #} echo "-----------------------" -echo "Source: {{ item.src | regex_replace('\\/$', '') }}" -echo "Destination: {{ item.dest.split(':') | last | regex_replace('\\/$', '') }}" +echo "Source: {{ item.src }}" +echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src | regex_replace('\\/$', '') }} 2>&1 > /dev/null ; then +if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('\\/$', '') }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }} {{ item.dest }} + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert } else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From ae2fc9ae4f229ef89cbdcd34dd723814f6216fa7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 15:59:48 +0100 Subject: [PATCH 092/131] sdfgds --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index da58c15f..1afc8569 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert } + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From 49ff4b335cde7bece64c0554eae6c90f06125193 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:00:37 +0100 Subject: [PATCH 093/131] dsf --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 1afc8569..477fdebe 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,8 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ + {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" fi -- 2.43.0 From cac8f94663a92520c8fede02e208af2e821725d4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:12:56 +0100 Subject: [PATCH 094/131] dfg --- group_vars/all.yml | 2 +- roles/mgrote_rsync/defaults/main.yml | 57 ++++++++++++++-------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 50ff39ef..61afd398 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -250,7 +250,7 @@ munin_node_plugins: ### mgrote_sync (für pbs + pve) rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror -rsync_mirror_bw_limit: "2m" # 2 Megabytes +rsync_mirror_bw_limit: "4m" # 4 Megabytes rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" diff --git a/roles/mgrote_rsync/defaults/main.yml b/roles/mgrote_rsync/defaults/main.yml index 6b3a704b..e79db865 100644 --- a/roles/mgrote_rsync/defaults/main.yml +++ b/roles/mgrote_rsync/defaults/main.yml @@ -7,32 +7,31 @@ # rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" # rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" # -# rsync_mirror_dirs: # "/" beachten! -# - src: /hdd_data/tmp -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -# - src: hdd_data/archiv -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" -# - src: hdd_data/backup -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" -# - src: hdd_data/bilder -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" -# - src: hdd_data/buecher -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" -# - src: hdd_data/music -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -# - src: hdd_data/papa_backup -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/papa_backup" -# - src: hdd_data/programme -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -# - src: hdd_data/pve_backup -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -# - src: hdd_data/restic -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -# - src: hdd_data/scans -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -# - src: hdd_data/tmp -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -# - src: hdd_data/videos -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -# - src: hdd_data/vm -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" +# rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende +# - src: /hdd_data/tmp +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +# - src: hdd_data/archiv +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" +# - src: hdd_data/backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" +# - src: hdd_data/bilder +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +# - src: hdd_data/buecher +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +# - src: hdd_data/music +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +# - src: hdd_data/programme +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +# - src: hdd_data/pve_backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +# - src: hdd_data/restic +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +# - src: hdd_data/scans +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +# - src: hdd_data/tmp +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +# - src: hdd_data/videos +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +# - src: hdd_data/vm +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" +# -- 2.43.0 From 9043558251b88b8bec00b70a75fa864a304bde54 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:20:50 +0100 Subject: [PATCH 095/131] sdfgd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 477fdebe..b1ce07c1 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" -- 2.43.0 From 97d71fb7c3b0c0388722d48c9093a0abd0d74b37 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:21:21 +0100 Subject: [PATCH 096/131] sdf --- host_vars/pve5.mgrote.net.yml | 40 +++++++++---------- .../mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 705c5278..bb6bd867 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -240,23 +240,23 @@ rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - src: hdd_data/backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - - src: hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" - - src: hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - - src: hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" - - src: hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - - src: hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" - - src: hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" - - src: hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" - - src: hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" - - src: hdd_data/vm - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" +# - src: hdd_data/bilder +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" +# - src: hdd_data/buecher +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" +# - src: hdd_data/music +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" +# - src: hdd_data/programme +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" +# - src: hdd_data/pve_backup +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" +# - src: hdd_data/restic +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" +# - src: hdd_data/scans +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" +# - src: hdd_data/tmp +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" +# - src: hdd_data/videos +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +# - src: hdd_data/vm +# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index b1ce07c1..9fa11539 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --dry-run --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" -- 2.43.0 From dd3def6922c177589bf411a75c45dd071646a7c3 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:26:27 +0100 Subject: [PATCH 097/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 9fa11539..0f69a016 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -10,7 +10,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ + rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" -- 2.43.0 From fe803c59ba0a25e6e5ee8e45ef1fce6b172449a7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:28:14 +0100 Subject: [PATCH 098/131] sdf --- host_vars/pve5.mgrote.net.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index bb6bd867..fc378bde 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -240,8 +240,8 @@ rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - src: hdd_data/backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" -# - src: hdd_data/bilder -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" + - src: hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" # - src: hdd_data/buecher # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" # - src: hdd_data/music -- 2.43.0 From 82a3536f8f5ce21b2682284449c71fda8f4f6e1f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:31:11 +0100 Subject: [PATCH 099/131] dfg --- host_vars/pve5.mgrote.net.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index fc378bde..192a4978 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -242,10 +242,10 @@ rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - src: hdd_data/bilder dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" -# - src: hdd_data/buecher -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" -# - src: hdd_data/music -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" + - src: hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" + - src: hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" # - src: hdd_data/programme # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" # - src: hdd_data/pve_backup -- 2.43.0 From aa18f74c690aeaacfe47c3b65cedcee240a5f8aa Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:37:49 +0100 Subject: [PATCH 100/131] sdfg --- host_vars/pve5.mgrote.net.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 192a4978..a9d4ce34 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -236,27 +236,27 @@ pve_pbs_datastore: rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: hdd_data/archiv + - src: /hdd_data/archiv dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - - src: hdd_data/backup + - src: /hdd_data/backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - - src: hdd_data/bilder + - src: /hdd_data/bilder dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" - - src: hdd_data/buecher + - src: /hdd_data/buecher dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - - src: hdd_data/music + - src: /hdd_data/music dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -# - src: hdd_data/programme +# - src: /hdd_data/programme # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -# - src: hdd_data/pve_backup +# - src: /hdd_data/pve_backup # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -# - src: hdd_data/restic +# - src: /hdd_data/restic # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -# - src: hdd_data/scans +# - src: /hdd_data/scans # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -# - src: hdd_data/tmp +# - src: /hdd_data/tmp # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -# - src: hdd_data/videos +# - src: /hdd_data/videos # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -# - src: hdd_data/vm +# - src: /hdd_data/vm # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" -- 2.43.0 From bc7a30f6cef74756274931080b37ec220721b50e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 16:56:23 +0100 Subject: [PATCH 101/131] ff --- roles/mgrote_rsync/tasks/user.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index c45a5894..14512698 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -9,8 +9,11 @@ become: true ansible.builtin.user: name: "{{ rsync_mirror_user }}" - group: "{{ rsync_mirror_user_group }}" + groups: + - "{{ rsync_mirror_user_group }}" + - root create_home: true # für .ssh + append: true - name: Ensure user is added to sudoers become: true -- 2.43.0 From fcfa95d0bf5691942ee1ef6eb2c9fcb5fd3f7c53 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 17:05:15 +0100 Subject: [PATCH 102/131] dsfg --- host_vars/pve5.mgrote.net.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index a9d4ce34..15cd015d 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -258,5 +258,4 @@ rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" # - src: /hdd_data/videos # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -# - src: /hdd_data/vm -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/vm" +# hdd_data/vm ist mit Absicht nicht dabei, zu groß -- 2.43.0 From 8f16165160ae5a7d2c7d2924a957081e9626f92f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 18:58:51 +0100 Subject: [PATCH 103/131] dfg --- host_vars/pve5.mgrote.net.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 15cd015d..03546cc6 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -246,10 +246,10 @@ rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - src: /hdd_data/music dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" -# - src: /hdd_data/programme -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" -# - src: /hdd_data/pve_backup -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" + - src: /hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" + - src: /hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" # - src: /hdd_data/restic # dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" # - src: /hdd_data/scans -- 2.43.0 From 0179dfeaeb3d1abb8ed5b38a8b0e2c1a9b0b94de Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 19:02:26 +0100 Subject: [PATCH 104/131] dfg --- host_vars/pve5.mgrote.net.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 03546cc6..a48c48c1 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -233,7 +233,7 @@ pve_pbs_datastore: fingerprint: "7F:AC:54:75:1C:33:55:84:1E:1E:3A:15:5A:5E:AF:79:33:C9:D4:E1:C0:A0:1C:0D:9E:6A:EA:82:F9:27:57:79" ### mgrote_sync -rsync_mirror_dirs: # "/" beachten, bei Src+Dest "/" KEIN am Ende +rsync_mirror_dirs: # bei Src+Dest KEIN "/" am Ende - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - src: /hdd_data/archiv -- 2.43.0 From be9e1e919a030618eeb2221d33952b849554a974 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:21:34 +0100 Subject: [PATCH 105/131] sdgf --- roles/mgrote_rsync/tasks/user.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/tasks/user.yml b/roles/mgrote_rsync/tasks/user.yml index 14512698..e417b4b2 100644 --- a/roles/mgrote_rsync/tasks/user.yml +++ b/roles/mgrote_rsync/tasks/user.yml @@ -12,6 +12,7 @@ groups: - "{{ rsync_mirror_user_group }}" - root + - users create_home: true # für .ssh append: true -- 2.43.0 From ec83447b679961a6789f57ced337dc9d45c95ac4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:32:43 +0100 Subject: [PATCH 106/131] sdfg --- host_vars/pbs.mgrote.net.yml | 4 ---- host_vars/pve5.mgrote.net.yml | 4 ---- 2 files changed, 8 deletions(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 9aaee235..41372b27 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -167,7 +167,3 @@ sanoid_datasets: recursive: 'no' # noqa yaml[truthy] snapshots: true template: '14tage' - - path: backup/pve5/vm - recursive: 'no' # noqa yaml[truthy] - snapshots: true - template: '14tage' diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index a48c48c1..43c991cb 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -149,10 +149,6 @@ sanoid_datasets: recursive: 'no' # noqa yaml[truthy] snapshots: true template: '14tage' - - path: hdd_data/vm - recursive: 'no' # noqa yaml[truthy] - snapshots: true - template: '14tage' ### rpool - path: rpool recursive: 'no' # noqa yaml[truthy] -- 2.43.0 From f9e407cfb6cb8af05b1294531ee4cd08f6274a53 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:38:44 +0100 Subject: [PATCH 107/131] sdfg --- group_vars/all.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 61afd398..46228b6f 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -202,9 +202,6 @@ sanoid_templates: autosnap: 'yes' autoprune: 'yes' -### mgrote_zfs_sanoid -sanoid_deb_url: http://docker10.mgrote.net:3344/sanoid_v2.2.0.deb - ### mgrote_munin_node munin_node_plugins_repo_user: "{{ ansible_forgejo_user }}" munin_node_plugins_repo_user_pass: "{{ ansible_forgejo_user_pass }}" -- 2.43.0 From f1e038249d0f861361f10e0cf54bba1e73182c51 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:38:57 +0100 Subject: [PATCH 108/131] sdf --- roles/mgrote_zfs_sanoid/README.md | 32 ------------------------------- 1 file changed, 32 deletions(-) diff --git a/roles/mgrote_zfs_sanoid/README.md b/roles/mgrote_zfs_sanoid/README.md index 552ed0f0..2b95eb3c 100644 --- a/roles/mgrote_zfs_sanoid/README.md +++ b/roles/mgrote_zfs_sanoid/README.md @@ -51,35 +51,3 @@ Es gibt 3 Funktionen: autoprune: 'yes' ``` - -### Beispiel - Snapshots senden und empfangen - -- Host 1 = Source -- Host 2 = Destination - - - -#### Variablen - Host 1 - -```yaml - sanoid_syncoid_source_host: true - sanoid_syncoid_ssh_pubkey: | - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3U37DGPRPDLlgxZcM0Zj/x6RVZxs7hcWBYfPywujH4+mjbpzJckr2tx3QLfxsCCjQVb4LNSEB0xsOvzDjfDsaPuG4wzqFVyZOtjI4iWg/it4ARndun33r+xSlWc5JKHH9GRK8SBOd4lXv5ylENdhWQ7z5ZF/FtCysb1JHTTYlobgXfTZ4NswJj6BBk669l13uL6zSXq6x6vm1GWiFIcIYqwM5WGSGHFoD2RNn0TJKI9A3AULPloMzWeHG3fJhoVfNY6ZB0kqpTHGoAmJUURkBFki1cJkzx3tyto4VpTzZmUyYg+qqIWbv7Me3YVJCln8JYD10uDb2oPRx6G3C9DlnzRmAVVbqCHzwvOY0H5TLTW7AXCHHgSdHaRym4oTUY9dDS/XFU3rHgexerBbi3sy1Tm0/dEU3cZFm4YOJXY/l4TeTRlhg2VbctsWE1BN1CZcoJRR+qNdJzM7Vl70Y6RGU92Y1rzSpooYVuyCFDrEIp0hAHidb5rs4paCvoxtVqak+LK8dcq0IbWxcxomEimeRG4+Opd3vo+U6subp5jqkOY0uYkFVJXaMHkP5ZIxlCFgif2A3YAPhz9IczRJaaNY3pbVgU7ybOBp+S8KRK8Ysk6OP5ApOTQVTlRhYeNqo7mpuW6139VRY5luekSCy3ehHCI9/MObhu2juF1Nz0HMeMQ== mg@irantu -``` - - -#### Variablen - Host 2 - -```yaml - sanoid_syncoid_timer: '*:*' - sanoid_syncoid_bwlimit: 30m - sanoid_syncoid_datasets_sync: - - source_host: host1.lan - source_dataset: hdd_data_mirror - destination_mount_check: hdd_data/encrypted # Wenn dieses Dataset nicht gemountet ist(z.B. durch Verschlüsselung, dann bricht syncoid ab) - destination_dataset: hdd_data/encrypted/syncoid/zfs1 - skip_parent: false - sanoid_syncoid_ssh_privkey: "{{ lookup('viczem.keepass.keepass', 'sanoid_syncoid_private_key', 'notes') }}" - sanoid_syncoid_destination_host: true - -``` -- 2.43.0 From 563fddbe007936fa30438203b022e84e8532520f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:41:27 +0100 Subject: [PATCH 109/131] dfg --- docker-compose/httpd/docker-compose.yml.j2 | 31 -- docker-compose/httpd/httpd.conf.j2 | 555 --------------------- host_vars/docker10.mgrote.net.yml | 2 +- 3 files changed, 1 insertion(+), 587 deletions(-) delete mode 100644 docker-compose/httpd/docker-compose.yml.j2 delete mode 100644 docker-compose/httpd/httpd.conf.j2 diff --git a/docker-compose/httpd/docker-compose.yml.j2 b/docker-compose/httpd/docker-compose.yml.j2 deleted file mode 100644 index 6039d32b..00000000 --- a/docker-compose/httpd/docker-compose.yml.j2 +++ /dev/null @@ -1,31 +0,0 @@ -services: - httpd-registry: - container_name: "httpd-registry" - image: "registry.mgrote.net/httpd:latest" - restart: unless-stopped - pull_policy: missing - volumes: - - uploads:/usr/local/apache2/htdocs/ - - "{{ compose_dest_basedir }}/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro" - ports: - - 3344:80 - - python-api-server: - container_name: httpd-api - image: "registry.mgrote.net/python-api-server:latest" - restart: unless-stopped - pull_policy: missing - ports: - - "5040:5000" - volumes: - - uploads:/uploads - environment: - # FLASK_DEBUG: 1 # for debugging - # FLASK_APP: app # for debugging - MAX_CONTENT_LENGTH: 500 - UPLOAD_DIRECTORY: /uploads - AUTH_TOKEN: "{{ lookup('viczem.keepass.keepass', 'httpd-api-server-token', 'password') }}" - ENABLE_WEBSERVER: false - -volumes: - uploads: diff --git a/docker-compose/httpd/httpd.conf.j2 b/docker-compose/httpd/httpd.conf.j2 deleted file mode 100644 index 11eb767b..00000000 --- a/docker-compose/httpd/httpd.conf.j2 +++ /dev/null @@ -1,555 +0,0 @@ -# -# This is the main Apache HTTP server configuration file. It contains the -# configuration directives that give the server its instructions. -# See for detailed information. -# In particular, see -# -# for a discussion of each configuration directive. -# -# Do NOT simply read the instructions in here without understanding -# what they do. They're here only as hints or reminders. If you are unsure -# consult the online docs. You have been warned. -# -# Configuration and logfile names: If the filenames you specify for many -# of the server's control files begin with "/" (or "drive:/" for Win32), the -# server will use that explicit path. If the filenames do *not* begin -# with "/", the value of ServerRoot is prepended -- so "logs/access_log" -# with ServerRoot set to "/usr/local/apache2" will be interpreted by the -# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" -# will be interpreted as '/logs/access_log'. - -# -# ServerRoot: The top of the directory tree under which the server's -# configuration, error, and log files are kept. -# -# Do not add a slash at the end of the directory path. If you point -# ServerRoot at a non-local disk, be sure to specify a local disk on the -# Mutex directive, if file-based mutexes are used. If you wish to share the -# same ServerRoot for multiple httpd daemons, you will need to change at -# least PidFile. -# -ServerRoot "/usr/local/apache2" - -# -# Mutex: Allows you to set the mutex mechanism and mutex file directory -# for individual mutexes, or change the global defaults -# -# Uncomment and change the directory if mutexes are file-based and the default -# mutex file directory is not on a local disk or is not appropriate for some -# other reason. -# -# Mutex default:logs - -# -# Listen: Allows you to bind Apache to specific IP addresses and/or -# ports, instead of the default. See also the -# directive. -# -# Change this to Listen on specific IP addresses as shown below to -# prevent Apache from glomming onto all bound IP addresses. -# -#Listen 12.34.56.78:80 -Listen 80 - -# -# Dynamic Shared Object (DSO) Support -# -# To be able to use the functionality of a module which was built as a DSO you -# have to place corresponding `LoadModule' lines at this location so the -# directives contained in it are actually available _before_ they are used. -# Statically compiled modules (those listed by `httpd -l') do not need -# to be loaded here. -# -# Example: -# LoadModule foo_module modules/mod_foo.so -# -LoadModule mpm_event_module modules/mod_mpm_event.so -#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so -#LoadModule mpm_worker_module modules/mod_mpm_worker.so -LoadModule authn_file_module modules/mod_authn_file.so -#LoadModule authn_dbm_module modules/mod_authn_dbm.so -#LoadModule authn_anon_module modules/mod_authn_anon.so -#LoadModule authn_dbd_module modules/mod_authn_dbd.so -#LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_user_module modules/mod_authz_user.so -#LoadModule authz_dbm_module modules/mod_authz_dbm.so -#LoadModule authz_owner_module modules/mod_authz_owner.so -#LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_core_module modules/mod_authz_core.so -#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so -#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule auth_basic_module modules/mod_auth_basic.so -#LoadModule auth_form_module modules/mod_auth_form.so -#LoadModule auth_digest_module modules/mod_auth_digest.so -#LoadModule allowmethods_module modules/mod_allowmethods.so -#LoadModule isapi_module modules/mod_isapi.so -#LoadModule file_cache_module modules/mod_file_cache.so -#LoadModule cache_module modules/mod_cache.so -#LoadModule cache_disk_module modules/mod_cache_disk.so -#LoadModule cache_socache_module modules/mod_cache_socache.so -#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -#LoadModule socache_dbm_module modules/mod_socache_dbm.so -#LoadModule socache_memcache_module modules/mod_socache_memcache.so -#LoadModule socache_redis_module modules/mod_socache_redis.so -#LoadModule watchdog_module modules/mod_watchdog.so -#LoadModule macro_module modules/mod_macro.so -#LoadModule dbd_module modules/mod_dbd.so -#LoadModule bucketeer_module modules/mod_bucketeer.so -#LoadModule dumpio_module modules/mod_dumpio.so -#LoadModule echo_module modules/mod_echo.so -#LoadModule example_hooks_module modules/mod_example_hooks.so -#LoadModule case_filter_module modules/mod_case_filter.so -#LoadModule case_filter_in_module modules/mod_case_filter_in.so -#LoadModule example_ipc_module modules/mod_example_ipc.so -#LoadModule buffer_module modules/mod_buffer.so -#LoadModule data_module modules/mod_data.so -#LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -#LoadModule ext_filter_module modules/mod_ext_filter.so -#LoadModule request_module modules/mod_request.so -#LoadModule include_module modules/mod_include.so -LoadModule filter_module modules/mod_filter.so -#LoadModule reflector_module modules/mod_reflector.so -#LoadModule substitute_module modules/mod_substitute.so -#LoadModule sed_module modules/mod_sed.so -#LoadModule charset_lite_module modules/mod_charset_lite.so -#LoadModule deflate_module modules/mod_deflate.so -#LoadModule xml2enc_module modules/mod_xml2enc.so -#LoadModule proxy_html_module modules/mod_proxy_html.so -#LoadModule brotli_module modules/mod_brotli.so -LoadModule mime_module modules/mod_mime.so -#LoadModule ldap_module modules/mod_ldap.so -LoadModule log_config_module modules/mod_log_config.so -#LoadModule log_debug_module modules/mod_log_debug.so -#LoadModule log_forensic_module modules/mod_log_forensic.so -#LoadModule logio_module modules/mod_logio.so -#LoadModule lua_module modules/mod_lua.so -LoadModule env_module modules/mod_env.so -#LoadModule mime_magic_module modules/mod_mime_magic.so -#LoadModule cern_meta_module modules/mod_cern_meta.so -#LoadModule expires_module modules/mod_expires.so -LoadModule headers_module modules/mod_headers.so -#LoadModule ident_module modules/mod_ident.so -#LoadModule usertrack_module modules/mod_usertrack.so -#LoadModule unique_id_module modules/mod_unique_id.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule version_module modules/mod_version.so -#LoadModule remoteip_module modules/mod_remoteip.so -#LoadModule proxy_module modules/mod_proxy.so -#LoadModule proxy_connect_module modules/mod_proxy_connect.so -#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -#LoadModule proxy_http_module modules/mod_proxy_http.so -#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so -#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -#LoadModule proxy_express_module modules/mod_proxy_express.so -#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -#LoadModule session_module modules/mod_session.so -#LoadModule session_cookie_module modules/mod_session_cookie.so -#LoadModule session_crypto_module modules/mod_session_crypto.so -#LoadModule session_dbd_module modules/mod_session_dbd.so -#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -#LoadModule ssl_module modules/mod_ssl.so -#LoadModule optional_hook_export_module modules/mod_optional_hook_export.so -#LoadModule optional_hook_import_module modules/mod_optional_hook_import.so -#LoadModule optional_fn_import_module modules/mod_optional_fn_import.so -#LoadModule optional_fn_export_module modules/mod_optional_fn_export.so -#LoadModule dialup_module modules/mod_dialup.so -#LoadModule http2_module modules/mod_http2.so -#LoadModule proxy_http2_module modules/mod_proxy_http2.so -#LoadModule md_module modules/mod_md.so -#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule unixd_module modules/mod_unixd.so -#LoadModule heartbeat_module modules/mod_heartbeat.so -#LoadModule heartmonitor_module modules/mod_heartmonitor.so -#LoadModule dav_module modules/mod_dav.so -LoadModule status_module modules/mod_status.so -LoadModule autoindex_module modules/mod_autoindex.so -#LoadModule asis_module modules/mod_asis.so -#LoadModule info_module modules/mod_info.so -#LoadModule suexec_module modules/mod_suexec.so - - #LoadModule cgid_module modules/mod_cgid.so - - - #LoadModule cgi_module modules/mod_cgi.so - -#LoadModule dav_fs_module modules/mod_dav_fs.so -#LoadModule dav_lock_module modules/mod_dav_lock.so -#LoadModule vhost_alias_module modules/mod_vhost_alias.so -#LoadModule negotiation_module modules/mod_negotiation.so -LoadModule dir_module modules/mod_dir.so -#LoadModule imagemap_module modules/mod_imagemap.so -#LoadModule actions_module modules/mod_actions.so -#LoadModule speling_module modules/mod_speling.so -#LoadModule userdir_module modules/mod_userdir.so -LoadModule alias_module modules/mod_alias.so -#LoadModule rewrite_module modules/mod_rewrite.so - - -# -# If you wish httpd to run as a different user or group, you must run -# httpd as root initially and it will switch. -# -# User/Group: The name (or #number) of the user/group to run httpd as. -# It is usually good practice to create a dedicated user and group for -# running httpd, as with most system services. -# -User www-data -Group www-data - - - -# 'Main' server configuration -# -# The directives in this section set up the values used by the 'main' -# server, which responds to any requests that aren't handled by a -# definition. These values also provide defaults for -# any containers you may define later in the file. -# -# All of these directives may appear inside containers, -# in which case these default settings will be overridden for the -# virtual host being defined. -# - -# -# ServerAdmin: Your address, where problems with the server should be -# e-mailed. This address appears on some server-generated pages, such -# as error documents. e.g. admin@your-domain.com -# -ServerAdmin you@example.com - -# -# ServerName gives the name and port that the server uses to identify itself. -# This can often be determined automatically, but we recommend you specify -# it explicitly to prevent problems during startup. -# -# If your host doesn't have a registered DNS name, enter its IP address here. -# -#ServerName www.example.com:80 - -# -# Deny access to the entirety of your server's filesystem. You must -# explicitly permit access to web content directories in other -# blocks below. -# - - AllowOverride none - Require all granted - - -# -# Note that from this point forward you must specifically allow -# particular features to be enabled - so if something's not working as -# you might expect, make sure that you have specifically enabled it -# below. -# - -# -# DocumentRoot: The directory out of which you will serve your -# documents. By default, all requests are taken from this directory, but -# symbolic links and aliases may be used to point to other locations. -# -DocumentRoot "/usr/local/apache2/htdocs" - - # - # Possible values for the Options directive are "None", "All", - # or any combination of: - # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews - # - # Note that "MultiViews" must be named *explicitly* --- "Options All" - # doesn't give it to you. - # - # The Options directive is both complicated and important. Please see - # http://httpd.apache.org/docs/2.4/mod/core.html#options - # for more information. - # - Options Indexes FollowSymLinks - - # - # AllowOverride controls what directives may be placed in .htaccess files. - # It can be "All", "None", or any combination of the keywords: - # AllowOverride FileInfo AuthConfig Limit - # - AllowOverride None - - # - # Controls who can get stuff from this server. - # - - # Ab hier alles für schöne Dir-listings - # https://perishablepress.com/better-default-directory-views-with-htaccess/ - IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=* SuppressHTMLPreamble - Order allow,deny - Options +Indexes - Allow from all - -# -# DirectoryIndex: sets the file that Apache will serve if a directory -# is requested. -# - - DirectoryIndex index.html - - -# -# The following lines prevent .htaccess and .htpasswd files from being -# viewed by Web clients. -# - - Require all denied - - -# -# ErrorLog: The location of the error log file. -# If you do not specify an ErrorLog directive within a -# container, error messages relating to that virtual host will be -# logged here. If you *do* define an error logfile for a -# container, that host's errors will be logged there and not here. -# -ErrorLog /proc/self/fd/2 - -# -# LogLevel: Control the number of messages logged to the error_log. -# Possible values include: debug, info, notice, warn, error, crit, -# alert, emerg. -# -LogLevel warn - - - # - # The following directives define some format nicknames for use with - # a CustomLog directive (see below). - # - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - - # You need to enable mod_logio.c to use %I and %O - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - - - # - # The location and format of the access logfile (Common Logfile Format). - # If you do not define any access logfiles within a - # container, they will be logged here. Contrariwise, if you *do* - # define per- access logfiles, transactions will be - # logged therein and *not* in this file. - # - CustomLog /proc/self/fd/1 common - - # - # If you prefer a logfile with access, agent, and referer information - # (Combined Logfile Format) you can use the following directive. - # - #CustomLog "logs/access_log" combined - - - - # - # Redirect: Allows you to tell clients about documents that used to - # exist in your server's namespace, but do not anymore. The client - # will make a new request for the document at its new location. - # Example: - # Redirect permanent /foo http://www.example.com/bar - - # - # Alias: Maps web paths into filesystem paths and is used to - # access content that does not live under the DocumentRoot. - # Example: - # Alias /webpath /full/filesystem/path - # - # If you include a trailing / on /webpath then the server will - # require it to be present in the URL. You will also likely - # need to provide a section to allow access to - # the filesystem path. - - # - # ScriptAlias: This controls which directories contain server scripts. - # ScriptAliases are essentially the same as Aliases, except that - # documents in the target directory are treated as applications and - # run by the server when requested rather than as documents sent to the - # client. The same rules about trailing "/" apply to ScriptAlias - # directives as to Alias. - # - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - - - - - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock - - -# -# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased -# CGI directory exists, if you have that configured. -# - - AllowOverride None - Options None - Require all granted - - - - # - # Avoid passing HTTP_PROXY environment to CGI's on this or any proxied - # backend servers which have lingering "httpoxy" defects. - # 'Proxy' request header is undefined by the IETF, not listed by IANA - # - RequestHeader unset Proxy early - - - - # - # TypesConfig points to the file containing the list of mappings from - # filename extension to MIME-type. - # - TypesConfig conf/mime.types - - # - # AddType allows you to add to or override the MIME configuration - # file specified in TypesConfig for specific file types. - # - #AddType application/x-gzip .tgz - # - # AddEncoding allows you to have certain browsers uncompress - # information on the fly. Note: Not all browsers support this. - # - #AddEncoding x-compress .Z - #AddEncoding x-gzip .gz .tgz - # - # If the AddEncoding directives above are commented-out, then you - # probably should define those extensions to indicate media types: - # - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - # - # AddHandler allows you to map certain file extensions to "handlers": - # actions unrelated to filetype. These can be either built into the server - # or added with the Action directive (see below) - # - # To use CGI scripts outside of ScriptAliased directories: - # (You will also need to add "ExecCGI" to the "Options" directive.) - # - #AddHandler cgi-script .cgi - - # For type maps (negotiated resources): - #AddHandler type-map var - - # - # Filters allow you to process content before it is sent to the client. - # - # To parse .shtml files for server-side includes (SSI): - # (You will also need to add "Includes" to the "Options" directive.) - # - #AddType text/html .shtml - #AddOutputFilter INCLUDES .shtml - - -# -# The mod_mime_magic module allows the server to use various hints from the -# contents of the file itself to determine its type. The MIMEMagicFile -# directive tells the module where the hint definitions are located. -# -#MIMEMagicFile conf/magic - -# -# Customizable error responses come in three flavors: -# 1) plain text 2) local redirects 3) external redirects -# -# Some examples: -#ErrorDocument 500 "The server made a boo boo." -#ErrorDocument 404 /missing.html -#ErrorDocument 404 "/cgi-bin/missing_handler.pl" -#ErrorDocument 402 http://www.example.com/subscription_info.html -# - -# -# MaxRanges: Maximum number of Ranges in a request before -# returning the entire resource, or one of the special -# values 'default', 'none' or 'unlimited'. -# Default setting is to accept 200 Ranges. -#MaxRanges unlimited - -# -# EnableMMAP and EnableSendfile: On systems that support it, -# memory-mapping or the sendfile syscall may be used to deliver -# files. This usually improves server performance, but must -# be turned off when serving from networked-mounted -# filesystems or if support for these functions is otherwise -# broken on your system. -# Defaults: EnableMMAP On, EnableSendfile Off -# -#EnableMMAP off -#EnableSendfile on - -# Supplemental configuration -# -# The configuration files in the conf/extra/ directory can be -# included to add extra features or to modify the default configuration of -# the server, or you may simply copy their contents here and change as -# necessary. - -# Server-pool management (MPM specific) -#Include conf/extra/httpd-mpm.conf - -# Multi-language error messages -#Include conf/extra/httpd-multilang-errordoc.conf - -# Fancy directory listings -Include conf/extra/httpd-autoindex.conf - -# Language settings -#Include conf/extra/httpd-languages.conf - -# User home directories -#Include conf/extra/httpd-userdir.conf - -# Real-time info on requests and configuration -#Include conf/extra/httpd-info.conf - -# Virtual hosts -#Include conf/extra/httpd-vhosts.conf - -# Local access to the Apache HTTP Server Manual -#Include conf/extra/httpd-manual.conf - -# Distributed authoring and versioning (WebDAV) -#Include conf/extra/httpd-dav.conf - -# Various default settings -#Include conf/extra/httpd-default.conf - -# Configure mod_proxy_html to understand HTML4/XHTML1 - -Include conf/extra/proxy-html.conf - - -# Secure (SSL/TLS) connections -#Include conf/extra/httpd-ssl.conf -# -# Note: The following must must be present to support -# starting without SSL on platforms with no /dev/random equivalent -# but a statically compiled-in mod_ssl. -# - -SSLRandomSeed startup builtin -SSLRandomSeed connect builtin - diff --git a/host_vars/docker10.mgrote.net.yml b/host_vars/docker10.mgrote.net.yml index 0574b358..21674447 100644 --- a/host_vars/docker10.mgrote.net.yml +++ b/host_vars/docker10.mgrote.net.yml @@ -42,7 +42,7 @@ compose_files: state: present network: traefik - name: httpd - state: present + state: absent - name: unifi-network-application state: present - name: miniflux -- 2.43.0 From 3c0e31fe361d9055e43d5aa4542a1348ea918fe4 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:48:21 +0100 Subject: [PATCH 110/131] sdfg --- host_vars/pbs.mgrote.net.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 41372b27..132f04d9 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -93,7 +93,7 @@ zfs_datasets: # DatenPools werden hier nicht verwaltet - dataset: backup/pve5/programme state: present - dataset: backup/pve5/vm - state: present + 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: -- 2.43.0 From 3b1add7114fc76f5e7c4821256c2050d68b0c704 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:50:24 +0100 Subject: [PATCH 111/131] dfgh --- roles/mgrote_rsync/tasks/source.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index 5fe99ae3..d61975e5 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -20,16 +20,7 @@ owner: "{{ rsync_mirror_user }}" group: "{{ rsync_mirror_user_group }}" mode: "0400" - # no_log: true # tido - -- name: Ensure SSH-Config is templated # todo - become: true - ansible.builtin.file: - dest: "/home/rsync_mirror/.ssh/config" - owner: "{{ rsync_mirror_user }}" - group: "{{ rsync_mirror_user_group }}" - mode: "0400" - state: absent + no_log: true - name: Ensure rsync_mirror-Script is templated become: true -- 2.43.0 From f5554cd73efc03df80726ed860b96bb1e054804d Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:52:32 +0100 Subject: [PATCH 112/131] dfgd --- group_vars/pbs.yml | 3 --- group_vars/pve.yml | 3 --- host_vars/pbs.mgrote.net.yml | 3 +++ host_vars/pve5.mgrote.net.yml | 2 +- roles/mgrote_rsync/tasks/main.yml | 31 +++++++++++++++++-------------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/group_vars/pbs.yml b/group_vars/pbs.yml index 358c4634..6520ac76 100644 --- a/group_vars/pbs.yml +++ b/group_vars/pbs.yml @@ -1,7 +1,4 @@ --- -### mgrote_rsync -rsync_host_role: destination - ### mgrote_netplan netplan_configure: false diff --git a/group_vars/pve.yml b/group_vars/pve.yml index 1225340a..b2b56dcc 100644 --- a/group_vars/pve.yml +++ b/group_vars/pve.yml @@ -1,7 +1,4 @@ --- -### mgrote_rsync -rsync_host_role: source - ### mgrote_netplan netplan_configure: false diff --git a/host_vars/pbs.mgrote.net.yml b/host_vars/pbs.mgrote.net.yml index 132f04d9..52d4e97c 100644 --- a/host_vars/pbs.mgrote.net.yml +++ b/host_vars/pbs.mgrote.net.yml @@ -167,3 +167,6 @@ sanoid_datasets: recursive: 'no' # noqa yaml[truthy] snapshots: true template: '14tage' + +### mgrote_rsync +rsync_host_role: destination diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 43c991cb..459917ff 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -9,7 +9,6 @@ ## hdd_data "neu" ### sudo zpool create -o ashift=12 -o feature@encryption=enabled -O encryption=on -O keylocation=prompt -O keyformat=passphrase hdd_data /dev/disk/by-id/ata-ST18000NM003D-3DL103_ZVTBSAYS - # mgrote.zfs_manage_datasets ### mgrote_zfs_extra # Variablen für mgrote.zfs_health/trim/scrub/zed/arc_mem/ sind zusammengefasst unter zfs_extra_* @@ -229,6 +228,7 @@ pve_pbs_datastore: fingerprint: "7F:AC:54:75:1C:33:55:84:1E:1E:3A:15:5A:5E:AF:79:33:C9:D4:E1:C0:A0:1C:0D:9E:6A:EA:82:F9:27:57:79" ### mgrote_sync +rsync_host_role: source rsync_mirror_dirs: # bei Src+Dest KEIN "/" am Ende - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index 55583b95..af0f694b 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -1,18 +1,21 @@ --- -- name: Include user tasks - ansible.builtin.include_tasks: user.yml +- name: Block + when: ("'source' in rsync_host_role") or ("'destination' in rsync_host_role") + block: + - name: Include user tasks + ansible.builtin.include_tasks: user.yml -- name: Ensure packages are present - become: true - ansible.builtin.package: - name: - - rsync - state: present + - name: Ensure packages are present + become: true + ansible.builtin.package: + name: + - rsync + state: present -- name: Include source tasks - ansible.builtin.include_tasks: source.yml - when: "'source' in rsync_host_role" + - name: Include source tasks + ansible.builtin.include_tasks: source.yml + when: "'source' in rsync_host_role" -- name: Include destination tasks - ansible.builtin.include_tasks: destination.yml - when: "'destination' in rsync_host_role" + - name: Include destination tasks + ansible.builtin.include_tasks: destination.yml + when: "'destination' in rsync_host_role" -- 2.43.0 From 542f618168438d64c6f3031620b61b65c0a4044b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:54:12 +0100 Subject: [PATCH 113/131] dfg --- group_vars/munin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/munin.yml b/group_vars/munin.yml index 0648cc1d..29f4e06f 100644 --- a/group_vars/munin.yml +++ b/group_vars/munin.yml @@ -104,7 +104,7 @@ munin_node_plugins: src: https://git.mgrote.net/mirrors/munin-contrib/raw/branch/master/plugins/http/http_response config: | [http_response] - env.sites https://git.mgrote.net http://ldap.mgrote.net:17170 https://docker10.mgrote.net:8443 https://registry.mgrote.net/ui/ http://docker10.mgrote.net:3344 http://munin.mgrote.net http://192.168.5.1 http://192.168.3.1 http://192.168.3.108:8080 http://192.168.3.204 http://docker10.mgrote.net:6483 https://miniflux.mgrote.net/ https://nextcloud.mgrote.net https://audio.mgrote.net/mg http://wiki.mgrote.net + env.sites https://git.mgrote.net http://ldap.mgrote.net:17170 https://docker10.mgrote.net:8443 https://registry.mgrote.net/ui/ http://munin.mgrote.net http://192.168.5.1 http://192.168.3.1 http://192.168.3.108:8080 http://192.168.3.204 http://docker10.mgrote.net:6483 https://miniflux.mgrote.net/ https://nextcloud.mgrote.net https://audio.mgrote.net/mg http://wiki.mgrote.net env.max_time 20 env.short_label true env.follow_redirect true -- 2.43.0 From 297ee308a7b8e72462ccce36de6e16aaedd50aca Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:54:44 +0100 Subject: [PATCH 114/131] dfg --- host_vars/docker10.mgrote.net.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/host_vars/docker10.mgrote.net.yml b/host_vars/docker10.mgrote.net.yml index 21674447..de6b330c 100644 --- a/host_vars/docker10.mgrote.net.yml +++ b/host_vars/docker10.mgrote.net.yml @@ -41,8 +41,6 @@ compose_files: - name: nextcloud state: present network: traefik - - name: httpd - state: absent - name: unifi-network-application state: present - name: miniflux -- 2.43.0 From 0d297173329e8c520d702d843b64f04d84d582c7 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 20:55:52 +0100 Subject: [PATCH 115/131] sdfs --- friedhof/httpd | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 friedhof/httpd diff --git a/friedhof/httpd b/friedhof/httpd new file mode 100644 index 00000000..6039d32b --- /dev/null +++ b/friedhof/httpd @@ -0,0 +1,31 @@ +services: + httpd-registry: + container_name: "httpd-registry" + image: "registry.mgrote.net/httpd:latest" + restart: unless-stopped + pull_policy: missing + volumes: + - uploads:/usr/local/apache2/htdocs/ + - "{{ compose_dest_basedir }}/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro" + ports: + - 3344:80 + + python-api-server: + container_name: httpd-api + image: "registry.mgrote.net/python-api-server:latest" + restart: unless-stopped + pull_policy: missing + ports: + - "5040:5000" + volumes: + - uploads:/uploads + environment: + # FLASK_DEBUG: 1 # for debugging + # FLASK_APP: app # for debugging + MAX_CONTENT_LENGTH: 500 + UPLOAD_DIRECTORY: /uploads + AUTH_TOKEN: "{{ lookup('viczem.keepass.keepass', 'httpd-api-server-token', 'password') }}" + ENABLE_WEBSERVER: false + +volumes: + uploads: -- 2.43.0 From 83865f2507d8df457e119fd7adedc406e114b7aa Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 21:01:47 +0100 Subject: [PATCH 116/131] sdfg --- roles/mgrote_rsync/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index af0f694b..2edf0e8e 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Block - when: ("'source' in rsync_host_role") or ("'destination' in rsync_host_role") + when: rsync_host_role is defined block: - name: Include user tasks ansible.builtin.include_tasks: user.yml -- 2.43.0 From c6f4fc1f8c94358796e24ce36f39faf842f91fcf Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 21:03:18 +0100 Subject: [PATCH 117/131] dfghf --- host_vars/pve5.mgrote.net.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 459917ff..b3eea196 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -246,12 +246,12 @@ rsync_mirror_dirs: # bei Src+Dest KEIN "/" am Ende dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - src: /hdd_data/pve_backup dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" -# - src: /hdd_data/restic -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" -# - src: /hdd_data/scans -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" -# - src: /hdd_data/tmp -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" -# - src: /hdd_data/videos -# dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" + - src: /hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" + - src: /hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" + - src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: /hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" # hdd_data/vm ist mit Absicht nicht dabei, zu groß -- 2.43.0 From 70b0ecc141a303f7dc47805d67b20ee68c0d271f Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 21:05:21 +0100 Subject: [PATCH 118/131] sdfg --- roles/mgrote_rsync/tasks/main.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/roles/mgrote_rsync/tasks/main.yml b/roles/mgrote_rsync/tasks/main.yml index 2edf0e8e..ce731dc4 100644 --- a/roles/mgrote_rsync/tasks/main.yml +++ b/roles/mgrote_rsync/tasks/main.yml @@ -2,20 +2,20 @@ - name: Block when: rsync_host_role is defined block: - - name: Include user tasks - ansible.builtin.include_tasks: user.yml + - name: Include user tasks + ansible.builtin.include_tasks: user.yml - - name: Ensure packages are present - become: true - ansible.builtin.package: - name: - - rsync - state: present + - name: Ensure packages are present + become: true + ansible.builtin.package: + name: + - rsync + state: present - - name: Include source tasks - ansible.builtin.include_tasks: source.yml - when: "'source' in rsync_host_role" + - name: Include source tasks + ansible.builtin.include_tasks: source.yml + when: "'source' in rsync_host_role" - - name: Include destination tasks - ansible.builtin.include_tasks: destination.yml - when: "'destination' in rsync_host_role" + - name: Include destination tasks + ansible.builtin.include_tasks: destination.yml + when: "'destination' in rsync_host_role" -- 2.43.0 From c472b9a6f9faf01dd831a6533ab5fb6527c4b531 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Tue, 29 Oct 2024 21:18:33 +0100 Subject: [PATCH 119/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 0f69a016..352dfd13 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -7,9 +7,9 @@ echo "-----------------------" echo "Source: {{ item.src }}" echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src }} 2>&1 > /dev/null ; then +if /usr/sbin/zfs get mounted -H {{ item.src }} > /dev/null 2>&1 ; then {# Mount check destination #} - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" -eq "yes" ]] ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" = "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else -- 2.43.0 From 53d5bc5be00b0520ae0a12fcbc6aec3e98b8c7fe Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Wed, 30 Oct 2024 14:06:10 +0100 Subject: [PATCH 120/131] sdfg --- roles/mgrote_rsync/tasks/source.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mgrote_rsync/tasks/source.yml b/roles/mgrote_rsync/tasks/source.yml index d61975e5..4080e6ff 100644 --- a/roles/mgrote_rsync/tasks/source.yml +++ b/roles/mgrote_rsync/tasks/source.yml @@ -60,8 +60,8 @@ become: true ansible.builtin.systemd: name: "{{ item }}" - masked: true # todo umkehren - enabled: false # todo umkehren + masked: false + enabled: true loop: - rsync_mirror.service - rsync_mirror.timer -- 2.43.0 From 6a69297072dd97c686d44e9fbb5e38f35df4624b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 10:55:37 +0100 Subject: [PATCH 121/131] fdgdsf --- host_vars/pve5.mgrote.net.yml | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index b3eea196..76d5f491 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -232,26 +232,3 @@ rsync_host_role: source rsync_mirror_dirs: # bei Src+Dest KEIN "/" am Ende - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: /hdd_data/archiv - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" - - src: /hdd_data/backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" - - src: /hdd_data/bilder - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" - - src: /hdd_data/buecher - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" - - src: /hdd_data/music - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" - - src: /hdd_data/programme - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" - - src: /hdd_data/pve_backup - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" - - src: /hdd_data/restic - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" - - src: /hdd_data/scans - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" - - src: /hdd_data/tmp - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" - - src: /hdd_data/videos - dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" -# hdd_data/vm ist mit Absicht nicht dabei, zu groß -- 2.43.0 From b76500327e4cbdec8526caaa5ba8bf4d84f9fb45 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:06:01 +0100 Subject: [PATCH 122/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 352dfd13..71b3f7d2 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -7,7 +7,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} -if /usr/sbin/zfs get mounted -H {{ item.src }} > /dev/null 2>&1 ; then +if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" = "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ @@ -19,16 +19,3 @@ else echo "Source-Dataset not mounted!" fi {% endfor %} - -{# Beispiel -echo "-----------------------" -echo "Source: /hdd_data/tmp/" -if /usr/sbin/zfs get mounted -H /hdd_data/tmp/ 2>&1 > /dev/null ; then - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no rsync_mirror@pbs.mgrote.net /usr/sbin/zfs get mounted -H /backup/pve5/tmp | cut -f3)" -eq "yes" ]] ; then - rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --itemize-changes --bwlimit=2m --verbose --omit-dir-times --archive --human-readable --stats --compress --fuzzy --force --delete-after --recursive /hdd_data/tmp/ rsync_mirror@pbs.mgrote.net:/backup/pve5/tmp/ - else - echo "Destination-Dataset not mounted!" - fi -else - echo "Source-Dataset not mounted!" -fi#} -- 2.43.0 From fd77c2db1d8e1c5b9495fed1252f2660c369f40b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:07:01 +0100 Subject: [PATCH 123/131] df --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 71b3f7d2..93bffca8 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -7,7 +7,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} -if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ; then +if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" = "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ -- 2.43.0 From 3fb2b355a982bcd5c348b2b392c5254d287ac741 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:08:54 +0100 Subject: [PATCH 124/131] dfgd --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 93bffca8..2d66faf9 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -9,7 +9,7 @@ echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then {# Mount check destination #} - if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last }} | cut -f3)" = "yes" ]] ; then + if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else -- 2.43.0 From 74303cd041d3a3fd039833a0c9ece842612f7d5b Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:09:27 +0100 Subject: [PATCH 125/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index 2d66faf9..f3797695 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -14,8 +14,10 @@ if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" + exit 1 fi else echo "Source-Dataset not mounted!" + exit 1 fi {% endfor %} -- 2.43.0 From ca2660c2d941fbe1c35d252dc534011b58e53243 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:11:14 +0100 Subject: [PATCH 126/131] dsfgd --- host_vars/pve5.mgrote.net.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/host_vars/pve5.mgrote.net.yml b/host_vars/pve5.mgrote.net.yml index 76d5f491..b3eea196 100644 --- a/host_vars/pve5.mgrote.net.yml +++ b/host_vars/pve5.mgrote.net.yml @@ -232,3 +232,26 @@ rsync_host_role: source rsync_mirror_dirs: # bei Src+Dest KEIN "/" am Ende - src: /hdd_data/tmp dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: /hdd_data/archiv + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/archiv" + - src: /hdd_data/backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/backup" + - src: /hdd_data/bilder + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/bilder" + - src: /hdd_data/buecher + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/buecher" + - src: /hdd_data/music + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/music" + - src: /hdd_data/programme + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/programme" + - src: /hdd_data/pve_backup + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/pve_backup" + - src: /hdd_data/restic + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/restic" + - src: /hdd_data/scans + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/scans" + - src: /hdd_data/tmp + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/tmp" + - src: /hdd_data/videos + dest: "{{ rsync_mirror_user }}@pbs.mgrote.net:/backup/pve5/videos" +# hdd_data/vm ist mit Absicht nicht dabei, zu groß -- 2.43.0 From c6529ec89d681bb710636928c86ac26b6ef50ca1 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:14:04 +0100 Subject: [PATCH 127/131] dfg --- roles/mgrote_rsync/templates/rsync_mirror.sh.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 index f3797695..43f880fd 100644 --- a/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 +++ b/roles/mgrote_rsync/templates/rsync_mirror.sh.j2 @@ -7,6 +7,7 @@ echo "-----------------------" echo "Source: {{ item.src }}" echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} +{# der führende / muss beim Dataset entfernt werden, sonst melden das Kommando immer "mounted" zurück #} if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then -- 2.43.0 From b65fcb188e0fcdfb229c7ac41194927189a09061 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:48:06 +0100 Subject: [PATCH 128/131] dsfgd --- group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 46228b6f..611ae2d5 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -248,7 +248,7 @@ munin_node_plugins: rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "4m" # 4 Megabytes -rsync_mirror_timer: '*-*-* 23:00:00' # jeden Tag um 2300 +rsync_mirror_timer: '*-*-* */8:00:00' # jeden Tag um 2300 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From 1177dca8efcad795b5fe70fa3a24b0d0f9f992c3 Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:54:01 +0100 Subject: [PATCH 129/131] dfgd --- group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 611ae2d5..23306ebd 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -248,7 +248,7 @@ munin_node_plugins: rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "4m" # 4 Megabytes -rsync_mirror_timer: '*-*-* */8:00:00' # jeden Tag um 2300 +rsync_mirror_timer: '*-*-* *-*-* 22,12:00:00' # jeden Tag um 2200 + 1200 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From 641ed7b66a5d334619ec9801301afd48168979ae Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 11:54:59 +0100 Subject: [PATCH 130/131] dsfg --- group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 23306ebd..7cfff259 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -248,7 +248,7 @@ munin_node_plugins: rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "4m" # 4 Megabytes -rsync_mirror_timer: '*-*-* *-*-* 22,12:00:00' # jeden Tag um 2200 + 1200 +rsync_mirror_timer: '*-*-* 22,12:00:00' # jeden Tag um 2200 + 1200 rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0 From ea7874fcaee5af8ff64f852cec3c37496fa981fe Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Thu, 31 Oct 2024 12:00:17 +0100 Subject: [PATCH 131/131] fghdf --- group_vars/all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/group_vars/all.yml b/group_vars/all.yml index 7cfff259..82ca1d13 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -248,7 +248,7 @@ munin_node_plugins: rsync_mirror_user_group: "{{ rsync_mirror_user }}" rsync_mirror_user: rsync_mirror rsync_mirror_bw_limit: "4m" # 4 Megabytes -rsync_mirror_timer: '*-*-* 22,12:00:00' # jeden Tag um 2200 + 1200 +rsync_mirror_timer: '*-*-* 0/8:*:*' # alle 8 h rsync_mirror_private_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_private_key', 'notes') }}" rsync_mirror_public_key: "{{ lookup('viczem.keepass.keepass', 'rsync_mirror_public_key', 'notes') }}" -- 2.43.0