Partitioning idempotency and filesystem tasks
This commit is contained in:
@@ -3,54 +3,63 @@
|
||||
block:
|
||||
- name: Create btrfs filesystem in main volume
|
||||
community.general.filesystem:
|
||||
dev: "{{ install_drive }}{{ main_partition_suffix }}"
|
||||
dev: "{{ partitioning_root_device }}"
|
||||
fstype: btrfs
|
||||
force: true
|
||||
opts: >-
|
||||
{{
|
||||
'-K'
|
||||
if (partitioning_luks_enabled | bool)
|
||||
and not ('discard' in (partitioning_luks_options | default('') | lower))
|
||||
else omit
|
||||
}}
|
||||
|
||||
- name: Prepare BTRFS Subvolume
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
src: "{{ install_drive }}{{ main_partition_suffix }}"
|
||||
src: "{{ partitioning_root_device }}"
|
||||
fstype: btrfs
|
||||
opts: rw,relatime,compress=zstd:15,ssd,space_cache=v2,discard=async
|
||||
state: mounted
|
||||
|
||||
- name: Enable quotas on Btrfs filesystem
|
||||
ansible.builtin.command: btrfs quota enable /mnt
|
||||
changed_when: result.rc == 0
|
||||
register: result
|
||||
register: partitioning_btrfs_quota_result
|
||||
changed_when: false
|
||||
|
||||
- name: Make root subvolumes
|
||||
when: cis | bool or item.subvol not in ['var_log_audit']
|
||||
ansible.builtin.command: btrfs su cr /mnt/{{ '@' if item.subvol == 'root' else '@' + item.subvol }}
|
||||
changed_when: result.rc == 0
|
||||
register: result
|
||||
args:
|
||||
creates: /mnt/{{ '@' if item.subvol == 'root' else '@' + item.subvol }}
|
||||
loop:
|
||||
- { subvol: root }
|
||||
- { subvol: swap }
|
||||
- { subvol: home }
|
||||
- { subvol: var }
|
||||
- { subvol: var_log }
|
||||
- { subvol: var_log_audit }
|
||||
- {subvol: root}
|
||||
- {subvol: swap}
|
||||
- {subvol: home}
|
||||
- {subvol: var}
|
||||
- {subvol: pkg}
|
||||
- {subvol: var_log}
|
||||
- {subvol: var_log_audit}
|
||||
register: partitioning_btrfs_subvol_result
|
||||
|
||||
- name: Set quotas for subvolumes
|
||||
when: cis | bool or item.subvol not in ['var_log_audit']
|
||||
when: cis | bool
|
||||
ansible.builtin.command: btrfs qgroup limit {{ item.quota }} /mnt/{{ '@' if item.subvol == 'root' else '@' + item.subvol }}
|
||||
changed_when: result.rc == 0
|
||||
register: result
|
||||
loop:
|
||||
- { subvol: home, quota: 2G }
|
||||
- {subvol: home, quota: 2G}
|
||||
register: partitioning_btrfs_qgroup_result
|
||||
changed_when: false
|
||||
|
||||
- name: Create a Btrfs swap file
|
||||
ansible.builtin.command: >-
|
||||
btrfs filesystem mkswapfile --size {{ ((vm_memory | float / 1024 >= 16.0) | ternary((vm_memory
|
||||
| float / 2048) | int, [vm_memory | float / 1024, 4.0] | max) | int) }}g --uuid clear /mnt/@swap/swapfile
|
||||
changed_when: result.rc == 0
|
||||
register: result
|
||||
btrfs filesystem mkswapfile --size {{ partitioning_swap_size_gb }}g --uuid clear /mnt/@swap/swapfile
|
||||
args:
|
||||
creates: /mnt/@swap/swapfile
|
||||
register: partitioning_btrfs_swap_result
|
||||
|
||||
- name: Unmount Partition
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
src: "{{ install_drive }}{{ main_partition_suffix }}"
|
||||
src: "{{ partitioning_root_device }}"
|
||||
fstype: btrfs
|
||||
state: unmounted
|
||||
|
||||
Reference in New Issue
Block a user