configpolicy/datavol.yml

91 lines
2.1 KiB
YAML

- hosts: all
vars:
mkfs_package:
btrfs: btrfs-progs
ext2: e2fsprogs
ext3: e2fsprogs
ext4: e2fsprogs
xfs: xfsprogs
tasks:
- name: ensure filesystem tools are installed
package:
name: >-
{{
data_volumes
| d([])
| map(attribute='fstype')
| map('extract', mkfs_package)
| list
}}
tags:
- install
- name: ensure lvm volume groups exist
lvg:
vg: '{{ item.key }}'
pvs: '{{ item.value.pvs }}'
loop: '{{ logical_volumes | d({}) | dict2items }}'
loop_control:
label: '{{ item.key }}'
tags:
- lvm
- lvm-vg
- name: ensure lvm logical volumes exist
lvol:
lv: '{{ item.1.name }}'
vg: '{{ item.0.key }}'
size: '{{ item.1.size }}'
loop: '{{ logical_volumes | d({}) | dict2items | subelements("value.lvs") }}'
loop_control:
label: '{{ item.0.key }}/{{ item.1.name }}'
tags:
- lvm
- lvm-lv
- name: ensure data volume filesystem exists
filesystem:
dev: '{{ item.dev }}'
fstype: '{{ item.fstype }}'
opts: '{{ item.opts|d(omit) }}'
loop: '{{ data_volumes|d([]) }}'
tags:
- mkfs
- name: ensure btrfs subvolumes exist
community.general.btrfs_subvolume:
name: '{{ item.name }}'
filesystem_device: '{{ item.device }}'
automount: true
loop: '{{ btrfs_subvolumes|d([]) }}'
tags:
- btrfs
- name: ensure mount point exists
file:
path: '{{ item.mountpoint }}'
state: directory
loop: '{{ data_volumes|d([]) }}'
- name: ensure data volume is mounted
mount:
path: '{{ item.mountpoint }}'
src: '{{ item.dev }}'
fstype: '{{ item.fstype }}'
opts: '{{ item.mountopts|d(omit) }}'
state: mounted
loop: '{{ data_volumes|d([]) }}'
notify:
- reload systemd
- fix data volume selinux context
handlers:
- name: reload systemd
systemd:
daemon_reload: true
- name: fix data volume selinux context
command:
restorecon -F {{ item.mountpoint }}
loop: '{{ data_volumes }}'