summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dan/sk-2019vm.yml1
-rw-r--r--dan/sk-cloudia.yml1
-rw-r--r--roles/prepare-dkms/tasks/default.yml10
-rw-r--r--roles/prepare-dkms/tasks/main.yml6
-rw-r--r--roles/prepare-dkms/vars/Debian.yml2
-rw-r--r--roles/prepare-dkms/vars/Ubuntu.yml2
-rw-r--r--roles/zfs/meta/main.yml3
-rw-r--r--roles/zfs/tasks/main.yml26
8 files changed, 48 insertions, 3 deletions
diff --git a/dan/sk-2019vm.yml b/dan/sk-2019vm.yml
index 10a633b0..6c2b1448 100644
--- a/dan/sk-2019vm.yml
+++ b/dan/sk-2019vm.yml
@@ -5,3 +5,4 @@
- role: base
- role: sshd
- role: zsh
+ - role: zfs
diff --git a/dan/sk-cloudia.yml b/dan/sk-cloudia.yml
index 6d22afed..dca8b9f8 100644
--- a/dan/sk-cloudia.yml
+++ b/dan/sk-cloudia.yml
@@ -5,3 +5,4 @@
- role: base
- role: sshd
- role: zsh
+ - role: zfs
diff --git a/roles/prepare-dkms/tasks/default.yml b/roles/prepare-dkms/tasks/default.yml
index 638b81f0..84ab3624 100644
--- a/roles/prepare-dkms/tasks/default.yml
+++ b/roles/prepare-dkms/tasks/default.yml
@@ -1,7 +1,15 @@
---
+- name: load distrubtion specific variables
+ include_vars: "{{ item }}"
+ with_first_found:
+ - files:
+ - "{{ ansible_distribution_release }}.yml"
+ - "{{ ansible_distribution }}.yml"
+ skip: true
+
- name: install kernel headers and dkms
apt:
name:
- - linux-headers-amd64 # TODO: fix this so it works for ubuntu(hwe) and debian
+ - "{{ dkms_linux_header_pkgname }}"
- dkms
state: present
diff --git a/roles/prepare-dkms/tasks/main.yml b/roles/prepare-dkms/tasks/main.yml
index 94f47c31..23533345 100644
--- a/roles/prepare-dkms/tasks/main.yml
+++ b/roles/prepare-dkms/tasks/main.yml
@@ -5,8 +5,10 @@
- name: prepare dkms on for raspberry-pi
include_tasks: raspberrypi.yml
- when: "ansible_lsb.id == 'Raspbian'"
+ when: "('id' in ansible_lsb and ansible_lsb.id == 'Raspbian')"
- name: prepare dkms on normal debian boxes
include_tasks: default.yml
- when: "'scaleway-kernel' not in group_names and ansible_lsb.id != 'Raspbian'"
+ when:
+ - "'scaleway-kernel' not in group_names"
+ - "('id' not in ansible_lsb or ansible_lsb.id != 'Raspbian')"
diff --git a/roles/prepare-dkms/vars/Debian.yml b/roles/prepare-dkms/vars/Debian.yml
new file mode 100644
index 00000000..108306c6
--- /dev/null
+++ b/roles/prepare-dkms/vars/Debian.yml
@@ -0,0 +1,2 @@
+---
+dkms_linux_header_pkgname: linux-image-amd64
diff --git a/roles/prepare-dkms/vars/Ubuntu.yml b/roles/prepare-dkms/vars/Ubuntu.yml
new file mode 100644
index 00000000..a848f713
--- /dev/null
+++ b/roles/prepare-dkms/vars/Ubuntu.yml
@@ -0,0 +1,2 @@
+---
+dkms_linux_header_pkgname: linux-headers-generic
diff --git a/roles/zfs/meta/main.yml b/roles/zfs/meta/main.yml
new file mode 100644
index 00000000..300d0ccf
--- /dev/null
+++ b/roles/zfs/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+- role: prepare-dkms
diff --git a/roles/zfs/tasks/main.yml b/roles/zfs/tasks/main.yml
new file mode 100644
index 00000000..478a25dd
--- /dev/null
+++ b/roles/zfs/tasks/main.yml
@@ -0,0 +1,26 @@
+---
+## TODO: @debian: make sure contrib repo is added
+
+- name: install zfs packages
+ apt:
+ name:
+ - zfs-dkms
+ - zfsutils-linux
+ state: present
+
+- name: check if module is available for the currently running kernel
+ command: modprobe --dry-run zfs
+ check_mode: no
+ register: zfs_module_available
+ failed_when: false
+ changed_when: false
+
+- name: rebuild zfs module
+ when: zfs_module_available.rc != 0
+ command: dpkg-reconfigure zfs-dkms
+
+- name: check again if module is available for the currently running kernel
+ when: zfs_module_available.rc != 0
+ command: modprobe --dry-run zfs
+ check_mode: no
+ changed_when: false