From 1d9ddbae8afd1026060ceb0a2eb7b18475f28d7e Mon Sep 17 00:00:00 2001 From: Michael Grote Date: Fri, 1 Apr 2022 18:06:15 +0200 Subject: [PATCH] wip --- roles/mgrote.zfs_sanoid/defaults/main.yml | 11 -- roles/mgrote.zfs_sanoid/handlers/main.yml | 26 ---- roles/mgrote.zfs_sanoid/tasks/main.yml | 122 +----------------- roles/mgrote.zfs_sanoid/tasks/user.yml | 13 +- .../templates/logrotate_sanoid | 12 -- .../templates/sanoid-cron.sh | 5 - .../templates/sanoid.conf.j2 | 29 ----- .../templates/sanoid.service.j2 | 9 -- .../templates/sanoid.timer.j2 | 11 -- .../templates/sanoid_mail.service.j2 | 8 -- 10 files changed, 5 insertions(+), 241 deletions(-) delete mode 100644 roles/mgrote.zfs_sanoid/handlers/main.yml delete mode 100644 roles/mgrote.zfs_sanoid/templates/logrotate_sanoid delete mode 100644 roles/mgrote.zfs_sanoid/templates/sanoid-cron.sh delete mode 100644 roles/mgrote.zfs_sanoid/templates/sanoid.conf.j2 delete mode 100644 roles/mgrote.zfs_sanoid/templates/sanoid.service.j2 delete mode 100644 roles/mgrote.zfs_sanoid/templates/sanoid.timer.j2 delete mode 100644 roles/mgrote.zfs_sanoid/templates/sanoid_mail.service.j2 diff --git a/roles/mgrote.zfs_sanoid/defaults/main.yml b/roles/mgrote.zfs_sanoid/defaults/main.yml index fbb95540..43d4bd15 100644 --- a/roles/mgrote.zfs_sanoid/defaults/main.yml +++ b/roles/mgrote.zfs_sanoid/defaults/main.yml @@ -1,15 +1,4 @@ --- - ### under which user the script is run - sanoid_user_group: "root" - sanoid_user: "sanoid" - - ### where to store the logfile - sanoid_log_file: "/var/log/sanoid-cron.log" - - ### where to download the binary + config - sanoid_dl_url: "https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/sanoid" - sanoid_dl_conf_url: "https://raw.githubusercontent.com/jimsalterjrs/sanoid/master/sanoid.defaults.conf" - ### when should the script be run sanoid_cron_hours: '*' sanoid_cron_minutes: '*' diff --git a/roles/mgrote.zfs_sanoid/handlers/main.yml b/roles/mgrote.zfs_sanoid/handlers/main.yml deleted file mode 100644 index 53c5b99a..00000000 --- a/roles/mgrote.zfs_sanoid/handlers/main.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- - - name: systemctl daemon-reload - become: yes - ansible.builtin.systemd: - daemon_reload: yes - - - name: systemctl enable units - become: yes - ansible.builtin.systemd: - name: "{{ item }}" - enabled: yes - masked: no - with_items: - - sanoid.service - - sanoid_mail.service - - sanoid.timer - - - name: systemctl start units - become: yes - ansible.builtin.systemd: - name: "{{ item }}" - state: restarted - enabled: yes - with_items: - - sanoid.timer - notify: systemctl daemon-reload diff --git a/roles/mgrote.zfs_sanoid/tasks/main.yml b/roles/mgrote.zfs_sanoid/tasks/main.yml index 9db64ca9..3eda612c 100644 --- a/roles/mgrote.zfs_sanoid/tasks/main.yml +++ b/roles/mgrote.zfs_sanoid/tasks/main.yml @@ -1,56 +1,14 @@ --- - - name: include user tasks + - name: include user tasks # entfernen include_tasks: user.yml - - name: Install Required Packages + - name: install packages become: true ansible.builtin.package: name: - - ca-certificates - - apt-transport-https - - software-properties-common - - curl - - wget - - logrotate - - libcapture-tiny-perl - - libconfig-inifiles-perl - - moreutils - - debhelper - - pv - - lzop - - mbuffer - - build-essential + - sanoid state: present - - name: Create Sanoid Directory - become: true - ansible.builtin.file: - path: "{{ item }}" - state: directory - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - recurse: true - with_items: - - /etc/sanoid - - - name: Install Sanoid Binary - become: true - ansible.builtin.get_url: - url: "{{ sanoid_dl_url }}" - dest: /usr/local/bin/sanoid - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - mode: 0755 - - - name: Install Sanoid Defaults Configuration - become: true - ansible.builtin.get_url: - url: "{{ sanoid_dl_conf_url }}" - dest: /etc/sanoid/sanoid.defaults.conf - owner: "{{ sanoid_user }}" - group: "{{ sanoid_user_group }}" - mode: 0644 - - name: Generate Sanoid Configuration become: true ansible.builtin.template: @@ -59,77 +17,3 @@ owner: "{{ sanoid_user }}" group: "{{ sanoid_user_group }}" mode: 0644 - - - name: template sanoid.service - become: yes - ansible.builtin.template: - src: sanoid.service.j2 - dest: /etc/systemd/system/sanoid.service - owner: root - group: root - mode: 0644 - notify: - - systemctl daemon-reload - - - name: template sanoid_mail.service - become: yes - 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: template sanoid.timer - become: yes - ansible.builtin.template: - src: sanoid.timer.j2 - dest: /etc/systemd/system/sanoid.timer - owner: root - group: root - mode: 0644 - notify: - - systemctl daemon-reload - - - name: systemctl start sanoid.timer - become: yes - ansible.builtin.systemd: - name: sanoid.timer - state: started - enabled: yes - - - - -# remove old!!! - - - name: Create Sanoid Log - become: true - ansible.builtin.file: - path: "{{ sanoid_log_file }}" - state: absent - - - name: copy logrotate config - become: yes - ansible.builtin.file: - state: absent - path: /etc/logrotate.d/sanoid - - - name: Generate Sanoid Cron Scripts - become: true - ansible.builtin.file: - state: absent - path: /usr/local/bin/sanoid-cron.sh - - - name: Configure Sanoid Cron Job - become: true - ansible.builtin.cron: - name: sanoid-cron - job: /usr/local/bin/sanoid-cron.sh - minute: "{{ sanoid_cron_minutes }}" - hour: "{{ sanoid_cron_hours }}" - user: "{{ sanoid_user }}" - state: absent diff --git a/roles/mgrote.zfs_sanoid/tasks/user.yml b/roles/mgrote.zfs_sanoid/tasks/user.yml index 64f28258..815a4b8e 100644 --- a/roles/mgrote.zfs_sanoid/tasks/user.yml +++ b/roles/mgrote.zfs_sanoid/tasks/user.yml @@ -1,22 +1,13 @@ --- - - name: ensure group exists - become: true - ansible.builtin.group: - name: "{{ sanoid_user_group }}" - state: present - when: - - sanoid_user_group is defined - - name: ensure user exists + - name: ensure user exists # ENTRFERNERN!!!!! become: true ansible.builtin.user: name: "{{ sanoid_user }}" group: "{{ sanoid_user_group }}" shell: /usr/sbin/nologin create_home: no - when: - - sanoid_user_group is defined - - sanoid_user is defined + state: absent - name: add user to sudoers # ENTRFERNERN!!!!! become: true diff --git a/roles/mgrote.zfs_sanoid/templates/logrotate_sanoid b/roles/mgrote.zfs_sanoid/templates/logrotate_sanoid deleted file mode 100644 index 0165f1de..00000000 --- a/roles/mgrote.zfs_sanoid/templates/logrotate_sanoid +++ /dev/null @@ -1,12 +0,0 @@ -{{ file_header | default () }} -{{ sanoid_log_file }} { - su root root - create 0644 root root - rotate 4 - weekly - compress - missingok - notifempty - dateext - dateyesterday -} diff --git a/roles/mgrote.zfs_sanoid/templates/sanoid-cron.sh b/roles/mgrote.zfs_sanoid/templates/sanoid-cron.sh deleted file mode 100644 index 804f5ffe..00000000 --- a/roles/mgrote.zfs_sanoid/templates/sanoid-cron.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -{{ file_header | default () }} -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - -sudo /usr/local/bin/sanoid --cron --verbose | ts '%Y-%m-%d - %H-%M-%S' >> {{ sanoid_log_file }} 2>&1 & diff --git a/roles/mgrote.zfs_sanoid/templates/sanoid.conf.j2 b/roles/mgrote.zfs_sanoid/templates/sanoid.conf.j2 deleted file mode 100644 index cd4f0c29..00000000 --- a/roles/mgrote.zfs_sanoid/templates/sanoid.conf.j2 +++ /dev/null @@ -1,29 +0,0 @@ -{{ file_header | default () }} -## ZFS Section -------------------------------- ## -{% for item in sanoid_datasets if item.snapshots is sameas true %} -{% if item.snapshots is sameas true %} -[{{ item.path }}] - use_template = {{ item.template }} - recursive = {{ item.recursive }} -## -------------------------------------------- ## -{% endif %} -{% 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.zfs_sanoid/templates/sanoid.service.j2 b/roles/mgrote.zfs_sanoid/templates/sanoid.service.j2 deleted file mode 100644 index b8f5de92..00000000 --- a/roles/mgrote.zfs_sanoid/templates/sanoid.service.j2 +++ /dev/null @@ -1,9 +0,0 @@ -{{ file_header | default () }} -[Unit] -Description=Trigger zfs-snapshots with sanoid. -After=multi-user.target -OnFailure=cv4pve_mail.service - -[Service] -Type=simple -ExecStart=/usr/local/bin/cv4pve/cv4pve-autosnap --host=127.0.0.1 --api-token {{ cv4pve_api_user }}={{ cv4pve_api_token }} --vmid="{{ cv4pve_vmid }}" snap --label='daily' --keep="{{ cv4pve_keep_snapshots }}" --state diff --git a/roles/mgrote.zfs_sanoid/templates/sanoid.timer.j2 b/roles/mgrote.zfs_sanoid/templates/sanoid.timer.j2 deleted file mode 100644 index ed002a77..00000000 --- a/roles/mgrote.zfs_sanoid/templates/sanoid.timer.j2 +++ /dev/null @@ -1,11 +0,0 @@ -{{ file_header | default () }} -[Unit] -Description=Timer: Trigger VM-Snapshots in PVE with cv4pve. - -[Timer] -OnCalendar=*-*-* {{ cv4pve_cron_hour }}:{{ cv4pve_cron_minute }}:00 -RandomizedDelaySec=10 min - - -[Install] -WantedBy=timers.target multi-user.target diff --git a/roles/mgrote.zfs_sanoid/templates/sanoid_mail.service.j2 b/roles/mgrote.zfs_sanoid/templates/sanoid_mail.service.j2 deleted file mode 100644 index af2a5c24..00000000 --- a/roles/mgrote.zfs_sanoid/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 cv4pve.service. - -[Service] -Type=oneshot -ExecStart=/bin/bash -c '/bin/systemctl status cv4pve.service | mail -s "[ERROR] cv4pve - %H" {{ empfaenger_mail }}'