--- # 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-uquota bs=1M count=400 ' - name: Create XFS filesystem filesystem: dev: '{{ remote_tmp_dir }}/img-uquota' fstype: xfs - block: - name: Mount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' src: '{{ remote_tmp_dir }}/img-uquota' path: '{{ remote_tmp_dir }}/uquota' fstype: xfs opts: uquota state: mounted - name: Apply default user limits xfs_quota: bsoft: '{{ uquota_default_bsoft }}' bhard: '{{ uquota_default_bhard }}' isoft: '{{ uquota_default_isoft }}' ihard: '{{ uquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/uquota' rtbsoft: '{{ uquota_default_rtbsoft }}' rtbhard: '{{ uquota_default_rtbhard }}' type: user become: true register: test_uquota_default_before - name: Assert default user limits results assert: that: - test_uquota_default_before.changed - test_uquota_default_before.bsoft == uquota_default_bsoft|human_to_bytes - test_uquota_default_before.bhard == uquota_default_bhard|human_to_bytes - test_uquota_default_before.isoft == uquota_default_isoft - test_uquota_default_before.ihard == uquota_default_ihard - test_uquota_default_before.rtbsoft == uquota_default_rtbsoft|human_to_bytes - test_uquota_default_before.rtbhard == uquota_default_rtbhard|human_to_bytes - name: Apply user limits xfs_quota: bsoft: '{{ uquota_user_bsoft }}' bhard: '{{ uquota_user_bhard }}' isoft: '{{ uquota_user_isoft }}' ihard: '{{ uquota_user_ihard }}' mountpoint: '{{ remote_tmp_dir }}/uquota' name: xfsquotauser rtbsoft: '{{ uquota_user_rtbsoft }}' rtbhard: '{{ uquota_user_rtbhard }}' type: user become: true register: test_uquota_user_before - name: Assert user limits results assert: that: - test_uquota_user_before.changed - test_uquota_user_before.bsoft == uquota_user_bsoft|human_to_bytes - test_uquota_user_before.bhard == uquota_user_bhard|human_to_bytes - test_uquota_user_before.isoft == uquota_user_isoft - test_uquota_user_before.ihard == uquota_user_ihard - test_uquota_user_before.rtbsoft == uquota_user_rtbsoft|human_to_bytes - test_uquota_user_before.rtbhard == uquota_user_rtbhard|human_to_bytes - name: Re-apply default user limits xfs_quota: bsoft: '{{ uquota_default_bsoft }}' bhard: '{{ uquota_default_bhard }}' isoft: '{{ uquota_default_isoft }}' ihard: '{{ uquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/uquota' rtbsoft: '{{ uquota_default_rtbsoft }}' rtbhard: '{{ uquota_default_rtbhard }}' type: user become: true register: test_uquota_default_after - name: Assert default user limits results after re-apply assert: that: - not test_uquota_default_after.changed - name: Re-apply user limits xfs_quota: bsoft: '{{ uquota_user_bsoft }}' bhard: '{{ uquota_user_bhard }}' isoft: '{{ uquota_user_isoft }}' ihard: '{{ uquota_user_ihard }}' mountpoint: '{{ remote_tmp_dir }}/uquota' name: xfsquotauser rtbsoft: '{{ uquota_user_rtbsoft }}' rtbhard: '{{ uquota_user_rtbhard }}' type: user become: true register: test_uquota_user_after - name: Assert user limits results for xfsquotauser after re-apply assert: that: - not test_uquota_user_after.changed - name: Reset default user limits xfs_quota: mountpoint: '{{ remote_tmp_dir }}/uquota' state: absent type: user become: true register: test_reset_uquota_default - name: Assert reset of default user limits results assert: that: - test_reset_uquota_default.changed - test_reset_uquota_default.bsoft == 0 - test_reset_uquota_default.bhard == 0 - test_reset_uquota_default.isoft == 0 - test_reset_uquota_default.ihard == 0 - test_reset_uquota_default.rtbsoft == 0 - test_reset_uquota_default.rtbhard == 0 - name: Reset user limits for xfsquotauser xfs_quota: mountpoint: '{{ remote_tmp_dir }}/uquota' name: xfsquotauser state: absent type: user become: true register: test_reset_uquota_user - name: Assert reset of default user limits results assert: that: - test_reset_uquota_user.changed - test_reset_uquota_user.bsoft == 0 - test_reset_uquota_user.bhard == 0 - test_reset_uquota_user.isoft == 0 - test_reset_uquota_user.ihard == 0 - test_reset_uquota_user.rtbsoft == 0 - test_reset_uquota_user.rtbhard == 0 always: - name: Unmount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' path: '{{ remote_tmp_dir }}/uquota' state: unmounted - name: Remove disk image file: path: '{{ remote_tmp_dir }}/img-uquota' state: absent