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