diff options
-rw-r--r-- | roles/ubuntu-ws/tasks/fs.yaml | 99 | ||||
-rw-r--r-- | roles/ubuntu-ws/tasks/main.yaml | 43 |
2 files changed, 100 insertions, 42 deletions
diff --git a/roles/ubuntu-ws/tasks/fs.yaml b/roles/ubuntu-ws/tasks/fs.yaml new file mode 100644 index 00000000..07358b99 --- /dev/null +++ b/roles/ubuntu-ws/tasks/fs.yaml @@ -0,0 +1,99 @@ +--- +- name: resize root logical volume + lvol: + vg: "{{ inventory_hostname }}" + lv: root + size: "{{ ubuntu_ws_root_fs_size }}" + +- name: create/resize root filesystem + filesystem: + fstype: ext4 + dev: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-root" + resizefs: yes + +- name: create/resize home logical volume + lvol: + vg: "{{ inventory_hostname }}" + lv: home + size: "{{ ubuntu_ws_home_fs_size }}" + +- name: create/resize home filesystem + filesystem: + fstype: ext4 + dev: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-home" + resizefs: yes + +- name: check if home is already mounted + command: "mountpoint -q /home" + register: home_mounted + check_mode: False + failed_when: False + changed_when: False + +- name: check if there are files in /home + find: + paths: /home + file_type: any + register: home_files + +- name: move existing files to new filesystem + when: home_mounted.rc == 1 and home_files.matched != 0 + block: + - name: create temporary mountpoint (1/2) + tempfile: + state: directory + suffix: mnt-home + register: mnt_home_temp + + - name: create temporary mountpoint (1/2) + file: + state: directory + path: "{{ mnt_home_temp.path }}/mnt" + + - name: temporarly mount new home filesystem + mount: + path: "{{ mnt_home_temp.path }}/mnt" + src: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-home" + state: mounted + fstype: ext4 + fstab: "{{ mnt_home_temp.path }}/fstab" + + - name: check if target fs is empty + find: + paths: "{{ mnt_home_temp.path }}/mnt" + file_type: any + register: home_files_target + failed_when: home_files_target.matched > 1 or (home_files_target.matched == 1 and home_files_target.files[0].path != mnt_home_temp.path + "/mnt/lost+found") + + - name: copy all files from old /home to new filesystem + command: "find -maxdepth 1 -exec cp -a {} {{ mnt_home_temp.path }}/mnt/ \\;" + args: + chdir: /home + + - name: remove all files from old /home + file: + path: /home + state: absent + + - name: recreate /home mountpoint + file: + path: /home + state: directory + + - name: umount temporarly mounted home filesystem + mount: + path: "{{ mnt_home_temp.path }}/mnt" + state: unmounted + + - name: remove temporary mountpoint + file: + state: absent + path: "{{ mnt_home_temp.path }}" + +- name: mount home filesystem + mount: + path: /home + src: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-home" + state: mounted + fstype: ext4 + opts: nodev diff --git a/roles/ubuntu-ws/tasks/main.yaml b/roles/ubuntu-ws/tasks/main.yaml index 5e980483..2de73780 100644 --- a/roles/ubuntu-ws/tasks/main.yaml +++ b/roles/ubuntu-ws/tasks/main.yaml @@ -1,46 +1,5 @@ --- -- name: resize root logical volume - lvol: - vg: "{{ inventory_hostname }}" - lv: root - size: "{{ ubuntu_ws_root_fs_size }}" - -- name: create/resize root filesystem - filesystem: - fstype: ext4 - dev: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-root" - resizefs: yes - -- name: create/resize home logical volume - lvol: - vg: "{{ inventory_hostname }}" - lv: home - size: "{{ ubuntu_ws_home_fs_size }}" - -- name: create/resize home filesystem - filesystem: - fstype: ext4 - dev: "/dev/mapper/{{ inventory_hostname | replace('-', '--') }}-home" - resizefs: yes - -- name: check if home is already mounted - command: "mountpoint -q /dev/mapper/{{ inventory_hostname | replace('-', '--') }}-home" - register: home_mounted - check_mode: False - failed_when: False - changed_when: False - -- name: check if there are files in /home - find: - paths: /home - file_type: any - register: home_files - -- name: move existing files to new filesystem - when: home_mounted.rc == 1 and home_files.matched != 0 - block: - - debug: - msg: "TODO: implement this" +- import_tasks: fs.yaml # - name: prohibited packages # template: |