# Copyright (c) 2021, Alexei Znamensky # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later - name: Install parted package: name: parted state: present when: ansible_os_family == 'Alpine' - name: Create empty file community.general.filesize: path: /bigfile size: 1GiB notify: Remove file - name: Obtain loop device name command: cmd: losetup -f changed_when: false register: losetup_name - name: Create loopback device command: cmd: losetup -f /bigfile changed_when: true register: losetup_cmd notify: Remove loopback device - name: Create first partition community.general.parted: device: "{{ losetup_name.stdout }}" number: 1 state: present fs_type: ext4 part_end: "50%" register: partition1 - name: Make filesystem community.general.filesystem: device: "{{ losetup_name.stdout }}p1" fstype: ext4 register: fs1_succ - name: Make filesystem (fail) community.general.filesystem: device: "{{ losetup_name.stdout }}p2" fstype: ext4 ignore_errors: true register: fs_fail - name: Create second partition community.general.parted: device: "{{ losetup_name.stdout }}" number: 2 state: present fs_type: ext4 part_start: "{{ partition1.partitions[0].end + 1 }}KiB" part_end: "100%" register: partition2 - name: Make filesystem community.general.filesystem: device: "{{ losetup_name.stdout }}p2" fstype: ext4 register: fs2_succ - name: Remove first partition community.general.parted: device: "{{ losetup_name.stdout }}" number: 1 state: absent register: partition_rem1 - name: Assert results assert: that: - partition1 is changed - fs1_succ is changed - fs_fail is failed - fs_fail is not changed - partition2 is changed - partition2.partitions | length == 2 - fs2_succ is changed - partition_rem1 is changed - partition_rem1.partitions | length == 1