aboutsummaryrefslogtreecommitdiff
path: root/roles/zfs
diff options
context:
space:
mode:
Diffstat (limited to 'roles/zfs')
-rw-r--r--roles/zfs/tasks/dataset-check-duplicate.yml11
-rw-r--r--roles/zfs/tasks/dataset-check-exists.yml3
-rw-r--r--roles/zfs/tasks/dataset-confirm-info.yml10
-rw-r--r--roles/zfs/tasks/dataset-create.yml4
-rw-r--r--roles/zfs/tasks/dataset-destroy.yml4
-rw-r--r--roles/zfs/vars/main.yml1
6 files changed, 33 insertions, 0 deletions
diff --git a/roles/zfs/tasks/dataset-check-duplicate.yml b/roles/zfs/tasks/dataset-check-duplicate.yml
new file mode 100644
index 0000000..1272765
--- /dev/null
+++ b/roles/zfs/tasks/dataset-check-duplicate.yml
@@ -0,0 +1,11 @@
+- name: Check if ZFS dataset exists
+ community.general.zfs_facts:
+ dataset: "{{ zfs_dataset }}"
+ register: zfs_dataset_exists_check
+ ignore_errors: true
+
+- name: Fail if ZFS dataset already exists
+ ansible.builtin.fail:
+ msg: "Dataset {{ zfs_dataset }} is already in-use."
+ when: not zfs_dataset_exists_check.failed
+
diff --git a/roles/zfs/tasks/dataset-check-exists.yml b/roles/zfs/tasks/dataset-check-exists.yml
new file mode 100644
index 0000000..43de7d4
--- /dev/null
+++ b/roles/zfs/tasks/dataset-check-exists.yml
@@ -0,0 +1,3 @@
+- name: Check if ZFS dataset exists
+ community.general.zfs_facts:
+ dataset: "{{ zfs_dataset }}"
diff --git a/roles/zfs/tasks/dataset-confirm-info.yml b/roles/zfs/tasks/dataset-confirm-info.yml
new file mode 100644
index 0000000..65885fb
--- /dev/null
+++ b/roles/zfs/tasks/dataset-confirm-info.yml
@@ -0,0 +1,10 @@
+- name: Fetch ZFS dataset information
+ community.general.zfs_facts:
+ dataset: "{{ zfs_dataset }}"
+ register: dataset_facts
+
+- name: Fail if ZFS dataset contains child datasets
+ ansible.builtin.fail:
+ msg: "Dataset {{ zfs_dataset }} contains child datasets."
+ when: dataset_facts.ansible_facts.ansible_zfs_datasets[0].usedbychildren != "0B"
+
diff --git a/roles/zfs/tasks/dataset-create.yml b/roles/zfs/tasks/dataset-create.yml
new file mode 100644
index 0000000..37c6e6b
--- /dev/null
+++ b/roles/zfs/tasks/dataset-create.yml
@@ -0,0 +1,4 @@
+- name: Create ZFS dataset
+ community.general.zfs:
+ name: "{{ zfs_dataset }}"
+ state: present
diff --git a/roles/zfs/tasks/dataset-destroy.yml b/roles/zfs/tasks/dataset-destroy.yml
new file mode 100644
index 0000000..9159f20
--- /dev/null
+++ b/roles/zfs/tasks/dataset-destroy.yml
@@ -0,0 +1,4 @@
+- name: Destroy ZFS dataset and all snapshots
+ community.general.zfs:
+ name: "{{ zfs_dataset }}"
+ state: absent
diff --git a/roles/zfs/vars/main.yml b/roles/zfs/vars/main.yml
new file mode 100644
index 0000000..a53eb98
--- /dev/null
+++ b/roles/zfs/vars/main.yml
@@ -0,0 +1 @@
+zfs_dataset: "{{ parent_dataset }}/{{ vm_name }}"