--- - name: 'Create a "disk" file' community.general.filesize: path: '{{ image_file }}' size: '{{ fssize }}M' force: true - vars: dev: '{{ image_file }}' block: - when: fstype == 'lvm' block: - name: 'Create a loop device for LVM' ansible.builtin.command: cmd: 'losetup --show -f {{ dev }}' register: loop_device_cmd - name: 'Switch to loop device target for further tasks' ansible.builtin.set_fact: dev: "{{ loop_device_cmd.stdout }}" - when: fstype == 'ufs' block: - name: 'Create a memory disk for UFS' ansible.builtin.command: cmd: 'mdconfig -a -f {{ dev }}' register: memory_disk_cmd - name: 'Switch to memory disk target for further tasks' ansible.builtin.set_fact: dev: "/dev/{{ memory_disk_cmd.stdout }}" - include_tasks: '{{ action }}.yml' always: - name: 'Detach loop device used for LVM' ansible.builtin.command: cmd: 'losetup -d {{ dev }}' removes: '{{ dev }}' when: fstype == 'lvm' - name: 'Detach memory disk used for UFS' ansible.builtin.command: cmd: 'mdconfig -d -u {{ dev }}' removes: '{{ dev }}' when: fstype == 'ufs' - name: 'Clean correct device for LVM and UFS' ansible.builtin.set_fact: dev: '{{ image_file }}' when: fstype in ['lvm', 'ufs'] - name: 'Remove disk image file' ansible.builtin.file: name: '{{ image_file }}' state: absent