Managing disk usage quotas is critical for ensuring fair resource allocation in shared environments like multi-user servers or DevOps pipelines. Although Ansible doesn't have a dedicated quota module, it remains a powerful tool for automating disk quota management using alternative modules and techniques. In this article, we’ll explore practical ways to manage disk quotas with Ansible.

---

What Are Disk Quotas?

Disk quotas are limits set on the amount of disk space or inodes that a user or group can use on a filesystem. They are essential for:

  • Preventing Resource Hoarding: Ensures no single user consumes excessive disk space.
  • Maintaining System Performance: Prevents systems from becoming sluggish due to storage overuse.
  • Enforcing Compliance: Helps adhere to organizational storage policies.

Linux provides tools like quota and xfs_quota to manage disk quotas. While Ansible lacks a specific quota module, you can leverage its capabilities to automate quota-related tasks.

---

Automating Quota Management with Ansible

1. Enable Quotas on the Filesystem

Before managing quotas, you must enable them on the target filesystem. For ext4 filesystems:

``bash

sudo mount -o remount,usrquota /dev/sda1

`

For XFS filesystems:

`bash

sudo xfs_quota -x -c "quota enable" /

`

In Ansible, you can automate this process:

`yaml

  • name: Enable quotas on ext4 filesystem

hosts: all

become: true

tasks:

- name: Remount with user quota enabled

ansible.builtin.command:

cmd: mount -o remount,usrquota /

`

---

Playbook: Manage XFS Quotas for User and Group devops

Here’s an example playbook where both the user and group are named devops. It configures quotas for the user devops and the group devops.

`yaml

---

  • name: Manage XFS Quotas for User and Group "devops"

hosts: all

become: true

tasks:

- name: Ensure xfsprogs is installed

ansible.builtin.package:

name: xfsprogs

state: present

- name: Configure user quotas for "devops" on /home

community.general.xfs_quota:

type: user

name: devops

mountpoint: /home

bsoft: 5G

bhard: 10G

isoft: 10000

ihard: 20000

state: present

- name: Configure group quotas for "devops" on /var/devops

community.general.xfs_quota:

type: group

name: devops

mountpoint: /var/devops

bsoft: 20G

bhard: 50G

isoft: 50000

ihard: 100000

state: present

- name: Verify quota settings

ansible.builtin.shell: xfs_quota -x -c "report -h"

register: quota_report

changed_when: false

- name: Display quota report

ansible.builtin.debug:

var: quota_report.stdout

`

---

Usage Instructions

1. Prepare the Filesystem:

- Ensure the target filesystems (/home and /var/devops) are mounted with XFS and quota options enabled:

``bash

sudo mount -o remo