From ebbd2a4015af3910a223d5aa6995680ddd64c9cb Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Sun, 26 Jul 2020 18:03:09 +0100 Subject: [PATCH] Install zfs and sanoid --- ansible/main.yml | 1 + ansible/roles/zfs/files/sanoid.conf | 21 +++++++++++++++++++++ ansible/roles/zfs/tasks/main.yml | 12 ++++++++++++ ansible/roles/zfs/tasks/sanoid.yml | 16 ++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 ansible/roles/zfs/files/sanoid.conf create mode 100644 ansible/roles/zfs/tasks/main.yml create mode 100644 ansible/roles/zfs/tasks/sanoid.yml diff --git a/ansible/main.yml b/ansible/main.yml index c356e79..d988499 100644 --- a/ansible/main.yml +++ b/ansible/main.yml @@ -49,3 +49,4 @@ - contessa - statping - upload + - zfs diff --git a/ansible/roles/zfs/files/sanoid.conf b/ansible/roles/zfs/files/sanoid.conf new file mode 100644 index 0000000..ee92b78 --- /dev/null +++ b/ansible/roles/zfs/files/sanoid.conf @@ -0,0 +1,21 @@ +###################################### +# This is a sample sanoid.conf file. # +# It should go in /etc/sanoid. # +###################################### + +[tank] + use_template = production + recursive = yes + +############################# +# templates below this line # +############################# + +[template_production] + frequently = 0 + hourly = 36 + daily = 30 + monthly = 3 + yearly = 0 + autosnap = yes + autoprune = yes diff --git a/ansible/roles/zfs/tasks/main.yml b/ansible/roles/zfs/tasks/main.yml new file mode 100644 index 0000000..17a7508 --- /dev/null +++ b/ansible/roles/zfs/tasks/main.yml @@ -0,0 +1,12 @@ +- name: Calculate ZFS ARC size + set_fact: + zfs_arc_size: "{{ (ansible_memtotal_mb * 1024 * 1024) * 0.15 }}" + +- name: Enable zfs module + modprobe: + name: zfs + state: present + params: 'zfs_arc_max={{ zfs_arc_size }}' + +- name: Sanoid + include: sanoid.yml diff --git a/ansible/roles/zfs/tasks/sanoid.yml b/ansible/roles/zfs/tasks/sanoid.yml new file mode 100644 index 0000000..ff00626 --- /dev/null +++ b/ansible/roles/zfs/tasks/sanoid.yml @@ -0,0 +1,16 @@ +- name: Install Sanoid + package: + name: sanoid + become: true + +- name: Sanoid config + template: + src: files/sanoid.conf + dest: /etc/sanoid/sanoid.conf + become: true + +- name: Install sanoid cron job + cron: + name: sanoid + special_time: hourly + job: TZ=UTC sanoid