91 lines
2.1 KiB
YAML
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 }}'
|