- 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 | map(attribute='fstype') | map('extract', mkfs_package) | list }} tags: - install - 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 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 -RF {{ item.mountpoint }} loop: '{{ data_volumes }}'