From c51d09842698902b61a80fccb02b76ec1130b180 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Mon, 2 Nov 2020 20:16:09 +0000 Subject: [PATCH] Added role misc/hdd_dir to link data directories to HDDs - Also added task to common to create parent directory --- roles/common/tasks/main.yml | 10 ++++++++ roles/misc/hdd_dir/defaults/main.yml | 10 ++++++++ roles/misc/hdd_dir/meta/main.yml | 3 +++ roles/misc/hdd_dir/tasks/main.yml | 36 ++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 roles/misc/hdd_dir/defaults/main.yml create mode 100644 roles/misc/hdd_dir/meta/main.yml create mode 100644 roles/misc/hdd_dir/tasks/main.yml diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index bbec833..4dcb3a1 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -38,6 +38,16 @@ vars: ansible_become: no +- name: Create hdd data directory + file: + state: directory + path: "{{ global_hdd_directory }}" + owner: root + group: root + mode: u=rwx,g=rx,o=rx + when: + - global_hdd_directory is defined + - name: Create scripts directories file: path: "{{ item }}" diff --git a/roles/misc/hdd_dir/defaults/main.yml b/roles/misc/hdd_dir/defaults/main.yml new file mode 100644 index 0000000..e22981f --- /dev/null +++ b/roles/misc/hdd_dir/defaults/main.yml @@ -0,0 +1,10 @@ +--- + +# will be linked from hdd_source_dir to hdd_target_dir + +# domain used to determine hdd_directory_name +hdd_directory_name: "{{ domain }}~{{ hdd_source_dir | basename }}" + +use_hdd_directory: no +# hdd_source_dir +hdd_target_dir: "{{ global_hdd_directory }}/{{ hdd_directory_name }}" diff --git a/roles/misc/hdd_dir/meta/main.yml b/roles/misc/hdd_dir/meta/main.yml new file mode 100644 index 0000000..cf5427b --- /dev/null +++ b/roles/misc/hdd_dir/meta/main.yml @@ -0,0 +1,3 @@ +--- + +allow_duplicates: yes diff --git a/roles/misc/hdd_dir/tasks/main.yml b/roles/misc/hdd_dir/tasks/main.yml new file mode 100644 index 0000000..6eb466f --- /dev/null +++ b/roles/misc/hdd_dir/tasks/main.yml @@ -0,0 +1,36 @@ +--- + +- name: Link data directory to HDD if requested + when: + - use_hdd_directory and hdd_target_dir is defined + block: + + - name: Check source directory + stat: + path: "{{ hdd_source_dir }}" + follow: no # to check if it is a link + get_attributes: no + get_checksum: no + get_mime: no + register: source_dir_info + + - name: Ensure that source directory is not already used + fail: + msg: >- + Source directory {{ hdd_source_dir | quote }} already used, + please shutdown service and transfer data manually + when: + - source_dir_info.stat.exists and not source_dir_info.stat.islnk + + - name: Create target directory on HDD + file: + state: directory + path: "{{ hdd_target_dir }}" + + - name: Create link from source to target + file: + state: link + src: "{{ hdd_target_dir }}" + dest: "{{ hdd_source_dir }}" + owner: root + group: root