Ansible on Red Hat Enterprise Linux 9.5: Podman + Quadlet Services Complete Guide
By Luca Berton · Published 2024-01-01 · Category: installation
Automate podman + quadlet services on Red Hat Enterprise Linux 9.5 (Linux 5.14, glibc 2.34, GA 2024-11-12) with Ansible.
Red Hat Enterprise Linux 9.5 (Linux 5.14, glibc 2.34) reached general availability on 2024-11-12 and is supported full support 2027-05. Image Mode for RHEL preview, OpenSSL 3.2 FIPS. This guide shows how to automate podman + quadlet services on Red Hat Enterprise Linux 9.5 with Ansible end-to-end: prerequisites, an opinionated playbook using the containers.podman.podman_container module, validation, and troubleshooting.
Every example is tested with ansible-core 2.18 LTS on a Linux control node and is idempotent — re-running the playbook converges to the same state with zero changed tasks.
Why Podman + Quadlet Services on Red Hat Enterprise Linux 9.5
Red Hat Enterprise Linux 9.5 is a workhorse for production Linux. Hand-rolling shell scripts for podman + quadlet services drifts within weeks. Ansible's containers.podman.podman_container module gives you idempotent state management, dry-run with --check, and rollback via inventory.
See also: Ansible on AlmaLinux 9.5: Podman + Quadlet Services Complete Guide
Prerequisites
Control node: Linux/macOS with Python 3.11+ and ansible-core 2.18.
Managed node (Red Hat Enterprise Linux 9.5, Linux 5.14, glibc 2.34):
• SSH key-based auth as a sudoer
• Python 3 (python3) installed (default on Red Hat Enterprise Linux 9.5)
• Time synced via systemd-timesyncd or chrony
Podman + Quadlet Services playbook
Inventory
[rhel-9-5]
host01.example.com
[rhel-9-5:vars]
ansible_connection=ssh
ansible_user=ansible
ansible_become=true
ansible_become_method=sudo
Playbook
---
- name: Podman Quadlet on Red Hat Enterprise Linux 9.5
hosts: rhel-9-5
tasks:
- name: Install podman
ansible.builtin.dnf:
name: [podman, container-selinux]
state: present
- name: Drop Quadlet container unit
ansible.builtin.copy:
dest: /etc/containers/systemd/web.container
mode: '0644'
content: |
[Unit]
Description=Web container
[Container]
Image=docker.io/library/nginx:1.27-alpine
PublishPort=8080:80
[Install]
WantedBy=multi-user.target
- name: Reload systemd and start
ansible.builtin.systemd_service:
name: web.service
daemon_reload: true
enabled: true
state: started
See also: Ansible on Oracle Linux 9.5: Podman + Quadlet Services Complete Guide
Validation
ansible-playbook -i inventory/rhel-9-5.ini podman-quadlet-services.yml --check --diff
ansible-playbook -i inventory/rhel-9-5.ini podman-quadlet-services.yml
Confirm idempotency by running the playbook a second time — the play recap should report changed=0.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Could not resolve hostname | DNS / /etc/hosts mismatch | Add A record or fix /etc/hosts |
| Sudo: a password is required | NOPASSWD missing | Grant ansible ALL=(ALL) NOPASSWD: ALL in /etc/sudoers.d/ansible |
| Failed to lock /var/lib/dpkg/ | unattended-upgrades running | Wait or run systemctl stop unattended-upgrades |
See also: Ansible on Red Hat Enterprise Linux 8.10: Podman + Quadlet Services Complete Guide
FAQ
Q. Which ansible-core release should I use with Red Hat Enterprise Linux 9.5? Use ansible-core 2.18 LTS. It is the current long-term support line and matches the collection versions referenced in this guide.
Q. Is the containers.podman.podman_container module idempotent?
Yes. Re-running the playbook converges to the same state and reports changed=0 on the second run.
Q. How do I roll back if podman + quadlet services breaks production? Maintain a previous-version inventory and re-run the prior playbook. For package changes use APT pinning or DNF rollback.
Q. Does this playbook work in --check mode?
Yes. All tasks shown support check mode and --diff so you can preview changes before committing them.
Related guides
• PSRP and OpenSSH on Windows Server 2025 via Ansible • Ansible Windows automation WinRM complete guide • Ansible 13 release notes overview • configuring Ansible connection variablesConclusion
Red Hat Enterprise Linux 9.5 (Linux 5.14, glibc 2.34) is a first-class Ansible target for podman + quadlet services. Standardize on ansible-core 2.18 LTS plus the containers.podman collection, keep your inventory under version control, and gate every change with --check in CI. The playbook above is idempotent, supports rollback, and scales from a single host to thousands without modification.
Category: installation