summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dan/sk-tomnext.yml2
-rw-r--r--inventory/host_vars/sk-tomnext.yml17
-rw-r--r--roles/zfs/sanoid/defaults/main.yml26
-rw-r--r--roles/zfs/sanoid/tasks/main.yml15
-rw-r--r--roles/zfs/sanoid/templates/sanoid.conf.j222
5 files changed, 79 insertions, 3 deletions
diff --git a/dan/sk-tomnext.yml b/dan/sk-tomnext.yml
index 1aa9baa9..4294880d 100644
--- a/dan/sk-tomnext.yml
+++ b/dan/sk-tomnext.yml
@@ -9,6 +9,8 @@
- role: apt-repo/base
- role: cryptdisk
- role: zfs/base
+ - role: apt-repo/spreadspace
+ - role: zfs/sanoid
- role: vm/host
- role: installer/debian/base
tasks:
diff --git a/inventory/host_vars/sk-tomnext.yml b/inventory/host_vars/sk-tomnext.yml
index 840de6f6..d570f1b2 100644
--- a/inventory/host_vars/sk-tomnext.yml
+++ b/inventory/host_vars/sk-tomnext.yml
@@ -46,11 +46,22 @@ cryptdisk_volumes:
device: /dev/disk/by-id/nvme-eui.00000000000000018ce38e0500157b3d-part3
+zfs_arc_size:
+ min: "{{ 2 * 1024 * 1024 * 1024 }}"
+ max: "{{ 8 * 1024 * 1024 * 1024 }}"
+
zfs_zpools:
storage:
mountpoint: /srv/storage
create_vdevs: mirror /dev/mapper/crypto-nvme0 /dev/mapper/crypto-nvme1
-zfs_arc_size:
- min: "{{ 2 * 1024 * 1024 * 1024 }}"
- max: "{{ 8 * 1024 * 1024 * 1024 }}"
+
+zfs_sanoid_modules:
+ storage/docker:
+ use_template: ignore
+ storage/kubelet:
+ use_template: ignore
+ storage/vm:
+ use_template: production
+ recursive: yes
+ process_children_only: yes
diff --git a/roles/zfs/sanoid/defaults/main.yml b/roles/zfs/sanoid/defaults/main.yml
new file mode 100644
index 00000000..55ebbd9d
--- /dev/null
+++ b/roles/zfs/sanoid/defaults/main.yml
@@ -0,0 +1,26 @@
+---
+zfs_sanoid_modules: {}
+
+zfs_sanoid_templates:
+ production:
+ frequently: 0
+ hourly: 36
+ daily: 7
+ monthly: 0
+ yearly: 0
+ autosnap: yes
+ autoprune: yes
+
+ backup:
+ frequently: 0
+ hourly: 0
+ daily: 60
+ monthly: 6
+ yearly: 0
+ autosnap: no
+ autoprune: yes
+
+ ignore:
+ autoprune: no
+ autosnap: no
+ monitor: no
diff --git a/roles/zfs/sanoid/tasks/main.yml b/roles/zfs/sanoid/tasks/main.yml
new file mode 100644
index 00000000..e35190e9
--- /dev/null
+++ b/roles/zfs/sanoid/tasks/main.yml
@@ -0,0 +1,15 @@
+---
+- name: install sanoid
+ apt:
+ name: sanoid
+ state: present
+
+- name: create sanoid config directory
+ file:
+ path: /etc/sanoid
+ state: directory
+
+- name: genarate sanoid config
+ template:
+ src: sanoid.conf.j2
+ dest: /etc/sanoid/sanoid.conf
diff --git a/roles/zfs/sanoid/templates/sanoid.conf.j2 b/roles/zfs/sanoid/templates/sanoid.conf.j2
new file mode 100644
index 00000000..2f2b29b4
--- /dev/null
+++ b/roles/zfs/sanoid/templates/sanoid.conf.j2
@@ -0,0 +1,22 @@
+###############################
+## modules
+###############################
+{% for name,options in zfs_sanoid_modules.items() %}
+
+[{{ name }}]
+{% for option,value in options.items() %}
+ {{ option }} = {{ value }}
+{% endfor %}
+{% endfor %}
+
+
+###############################
+## templates
+###############################
+{% for name,options in zfs_sanoid_templates.items() %}
+
+[template_{{ name }}]
+{% for option,value in options.items() %}
+ {{ option }} = {{ value }}
+{% endfor %}
+{% endfor %}