--- - name: Ensure mountpoint exists ansible.builtin.file: path: "{{ m.path }}" state: directory mode: "0755" - name: Ensure marker directory exists (mkfs_once) ansible.builtin.file: path: /var/lib/prole/iscsi state: directory owner: root group: root mode: "0755" when: m.mkfs_once | default(false) | bool - name: Compute mkfs marker path (mkfs_once) ansible.builtin.set_fact: _iscsi_mkfs_marker: >- /var/lib/prole/iscsi/mkfs- {{ (m.src | regex_replace('^UUID=', 'uuid-') | regex_replace('^LABEL=', 'label-') | regex_replace('[^A-Za-z0-9_.-]', '_')) }} .done when: m.mkfs_once | default(false) | bool - name: Check mkfs marker presence (mkfs_once) ansible.builtin.stat: path: "{{ _iscsi_mkfs_marker }}" register: _iscsi_mkfs_marker_stat when: m.mkfs_once | default(false) | bool - name: Fail if mountpoint is already mounted but mkfs_once requested ansible.builtin.command: "findmnt -n {{ m.path }}" register: _iscsi_findmnt_before_mkfs changed_when: false failed_when: false when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - name: Refuse to mkfs when mountpoint is mounted ansible.builtin.fail: msg: "Refusing to mkfs {{ m.src }} because {{ m.path }} is already mounted ({{ _iscsi_findmnt_before_mkfs.stdout | default('') }})." when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - _iscsi_findmnt_before_mkfs.rc == 0 - name: Resolve block device for mkfs (mkfs_once) ansible.builtin.command: >- {{ (m.src | regex_search('^UUID=') ) | ternary('blkid -U ' ~ (m.src | regex_replace('^UUID=', '')), (m.src | regex_search('^LABEL=') ) | ternary('blkid -L ' ~ (m.src | regex_replace('^LABEL=', '')), 'echo ' ~ (m.src))) }} register: _iscsi_mkfs_dev changed_when: false when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - name: Require resolved device to look like /dev/* (mkfs_once) ansible.builtin.assert: that: - (_iscsi_mkfs_dev.stdout | default('') | trim) is match('^/dev/') fail_msg: "Unable to resolve a /dev/* block device for mkfs from src={{ m.src }} (got: {{ _iscsi_mkfs_dev.stdout | default('') | trim }})." when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - name: Re-initialize filesystem (mkfs.ext4) (mkfs_once) ansible.builtin.command: "mkfs.ext4 -F {{ _iscsi_mkfs_dev.stdout | trim }}" changed_when: true when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - name: Write mkfs marker (mkfs_once) ansible.builtin.file: path: "{{ _iscsi_mkfs_marker }}" state: touch owner: root group: root mode: "0644" when: - m.mkfs_once | default(false) | bool - _iscsi_mkfs_marker_stat.stat.exists is not defined or not _iscsi_mkfs_marker_stat.stat.exists - name: Mount {{ m.path }} ansible.builtin.mount: path: "{{ m.path }}" src: "{{ m.src }}" fstype: "{{ m.fstype | default('ext4') }}" opts: "{{ m.opts | default('_netdev,noatime') }}" state: mounted