--- # Copyright (c) Ansible Project # 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: Create disk image command: 'dd if=/dev/zero of={{ remote_tmp_dir }}/img-gquota bs=1M count=400 ' - name: Create XFS filesystem filesystem: dev: '{{ remote_tmp_dir }}/img-gquota' fstype: xfs - block: - name: Mount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' src: '{{ remote_tmp_dir }}/img-gquota' path: '{{ remote_tmp_dir }}/gquota' fstype: xfs opts: gquota state: mounted - name: Apply default group limits xfs_quota: bsoft: '{{ gquota_default_bsoft }}' bhard: '{{ gquota_default_bhard }}' isoft: '{{ gquota_default_isoft }}' ihard: '{{ gquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/gquota' rtbsoft: '{{ gquota_default_rtbsoft }}' rtbhard: '{{ gquota_default_rtbhard }}' type: group become: true register: test_gquota_default_before - name: Assert default group limits results assert: that: - test_gquota_default_before.changed - test_gquota_default_before.bsoft == gquota_default_bsoft|human_to_bytes - test_gquota_default_before.bhard == gquota_default_bhard|human_to_bytes - test_gquota_default_before.isoft == gquota_default_isoft - test_gquota_default_before.ihard == gquota_default_ihard - test_gquota_default_before.rtbsoft == gquota_default_rtbsoft|human_to_bytes - test_gquota_default_before.rtbhard == gquota_default_rtbhard|human_to_bytes - name: Apply group limits xfs_quota: bsoft: '{{ gquota_group_bsoft }}' bhard: '{{ gquota_group_bhard }}' isoft: '{{ gquota_group_isoft }}' ihard: '{{ gquota_group_ihard }}' mountpoint: '{{ remote_tmp_dir }}/gquota' name: xfsquotauser rtbsoft: '{{ gquota_group_rtbsoft }}' rtbhard: '{{ gquota_group_rtbhard }}' type: group become: true register: test_gquota_group_before - name: Assert group limits results for xfsquotauser assert: that: - test_gquota_group_before.changed - test_gquota_group_before.bsoft == gquota_group_bsoft|human_to_bytes - test_gquota_group_before.bhard == gquota_group_bhard|human_to_bytes - test_gquota_group_before.isoft == gquota_group_isoft - test_gquota_group_before.ihard == gquota_group_ihard - test_gquota_group_before.rtbsoft == gquota_group_rtbsoft|human_to_bytes - test_gquota_group_before.rtbhard == gquota_group_rtbhard|human_to_bytes - name: Re-apply default group limits xfs_quota: bsoft: '{{ gquota_default_bsoft }}' bhard: '{{ gquota_default_bhard }}' isoft: '{{ gquota_default_isoft }}' ihard: '{{ gquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/gquota' rtbsoft: '{{ gquota_default_rtbsoft }}' rtbhard: '{{ gquota_default_rtbhard }}' type: group become: true register: test_gquota_default_after - name: Assert default group limits results after re-apply assert: that: - not test_gquota_default_after.changed - name: Re-apply group limits xfs_quota: bsoft: '{{ gquota_group_bsoft }}' bhard: '{{ gquota_group_bhard }}' isoft: '{{ gquota_group_isoft }}' ihard: '{{ gquota_group_ihard }}' mountpoint: '{{ remote_tmp_dir }}/gquota' name: xfsquotauser rtbsoft: '{{ gquota_group_rtbsoft }}' rtbhard: '{{ gquota_group_rtbhard }}' type: group become: true register: test_gquota_group_after - name: Assert group limits results for xfsquotauser after re-apply assert: that: - not test_gquota_group_after.changed - name: Reset default group limits xfs_quota: mountpoint: '{{ remote_tmp_dir }}/gquota' state: absent type: group become: true register: test_reset_gquota_default - name: Assert reset of default group limits results assert: that: - test_reset_gquota_default.changed - test_reset_gquota_default.bsoft == 0 - test_reset_gquota_default.bhard == 0 - test_reset_gquota_default.isoft == 0 - test_reset_gquota_default.ihard == 0 - test_reset_gquota_default.rtbsoft == 0 - test_reset_gquota_default.rtbhard == 0 - name: Reset group limits for xfsquotauser xfs_quota: mountpoint: '{{ remote_tmp_dir }}/gquota' name: xfsquotauser state: absent type: group become: true register: test_reset_gquota_group - name: Assert reset of default group limits results assert: that: - test_reset_gquota_group.changed - test_reset_gquota_group.bsoft == 0 - test_reset_gquota_group.bhard == 0 - test_reset_gquota_group.isoft == 0 - test_reset_gquota_group.ihard == 0 - test_reset_gquota_group.rtbsoft == 0 - test_reset_gquota_group.rtbhard == 0 always: - name: Unmount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' path: '{{ remote_tmp_dir }}/gquota' state: unmounted - name: Remove disk image file: path: '{{ remote_tmp_dir }}/img-gquota' state: absent