Ansible on Fedora Silverblue 45: rpm-ostree Image Layering Complete Guide
By Luca Berton · Published 2024-01-01 · Category: troubleshooting
Automate rpm-ostree image layering on Fedora Silverblue 45 (rpm-ostree, GNOME 47, GA 2025-10-29) with Ansible. Use community.general.rpm_ostree_pkg to add.
Fedora Silverblue 45 (rpm-ostree, GNOME 47) reached general availability on 2025-10-29 and is supported ~2026-11. Atomic image upgrades, Flatpak first-class. This guide shows how to automate rpm-ostree image layering on Fedora Silverblue 45 with Ansible end-to-end: prerequisites, an opinionated playbook using the community.general.rpm_ostree_pkg 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 rpm-ostree Image Layering on Fedora Silverblue 45
Immutable distros like Fedora Silverblue 45 are designed to resist mutation. The right Ansible pattern is render → reboot, not in-place package edits. Use community.general.rpm_ostree_pkg to add layered RPMs and roll back.
See also: Ansible on Fedora CoreOS: rpm-ostree Image Layering Complete Guide
Prerequisites
Control node: any Linux/macOS with ansible-core 2.18 and the community.general collection.
Managed node (Fedora Silverblue 45, rpm-ostree, GNOME 47):
- SSH with key-based auth (or Talos:
talosctlonly — no SSH) - Sudo or
becomefor image transactions - Atomic image upgrades, Flatpak first-class.
rpm-ostree Image Layering playbook
Inventory
[fedora-silverblue-45]
host01.example.com
[fedora-silverblue-45:vars]
ansible_connection=ssh
ansible_user=ansible
ansible_become=true
ansible_become_method=sudoPlaybook
---
- name: Layer packages on Fedora Silverblue 45
hosts: fedora-silverblue-45
tasks:
- name: Layer toolbox + tcpdump
community.general.rpm_ostree_pkg:
name: [toolbox, tcpdump]
state: present
- name: Stage update
ansible.builtin.command: rpm-ostree upgrade --check
changed_when: false
- name: Reboot to apply layered image
ansible.builtin.reboot:
reboot_timeout: 600Validation
ansible-playbook -i inventory/fedora-silverblue-45.ini rpm-ostree-image-layering.yml --check --diff
ansible-playbook -i inventory/fedora-silverblue-45.ini rpm-ostree-image-layering.ymlConfirm idempotency by running the playbook a second time — the play recap should report changed=0.
See also: Ansible on RHEL for Edge: rpm-ostree Image Layering Complete Guide
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
error: Read-only file system | Trying to write outside /etc and /var | Use rpm-ostree layering or /etc overlay |
| Reboot loop after layering | Bad rpm-ostree commit | rpm-ostree rollback from GRUB |
| Updates do not apply | Zincati paused | systemctl status zincati and resume schedule |
FAQ
Q. Which ansible-core release should I use with Fedora Silverblue 45? 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 community.general.rpm_ostree_pkg 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 rpm-ostree image layering breaks production?
Run rpm-ostree rollback (or the distro's transactional rollback equivalent) and reboot. Atomic distros are designed for this.
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
- configuring Windows Server 2025 hosts with Ansible
- managing Windows servers via Ansible WinRM
- Ansible 13 collection compatibility
- Ansible connection plugins reference
Conclusion
Fedora Silverblue 45 (rpm-ostree, GNOME 47) is a first-class Ansible target for rpm-ostree image layering. Standardize on ansible-core 2.18 LTS plus the community.general 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: troubleshooting