Candid photograph of a Linux server terminal with a soft olive-green glow against a dark slate background, conveying a calm technical atmosphere.

Step-by-step guides for system administrators — covering command-line basics, web server setup, and preparation material for technical interviews.

Browse Tutorials

Automating tasks with Ansible playbooks on Fedora

Ansible turns repetitive system administration into repeatable, reviewable workflows. A playbook written in YAML can install packages, create directories, deploy configuration and start services across Fedora hosts without a permanently installed agent. The control node connects over SSH, so the same files can manage laptops, test servers and production systems while keeping the desired state visible in Git.

Australian infrastructure teams often have a mixed estate: Fedora workstations in Sydney and Melbourne offices, RHEL or CentOS servers in Brisbane and Perth, and virtual machines with different hostnames. Groups and variables can hide that variation, while explicit Australia/Sydney and Australia/Brisbane time zones keep schedules and logs understandable across AEST and AEDT daylight-saving changes. Approved local package mirrors and planned update windows around Australian public holidays help maintain predictable operations.

Prepare the control node and inventory

Use a Linux workstation or small VM as the control node. Keep it separate from the hosts it manages, install SSH keys, and grant only the privileges needed for the tasks. On Fedora, install the core package and confirm its version:

sudo dnf install -y ansible-core
ansible --version

Keep hostnames in a project inventory rather than scattering them across scripts. A simple inventory might look like this:

[fedora_servers]
app-01 ansible_host=10.20.0.21
app-02 ansible_host=10.20.0.22

[fedora_servers:vars]
ansible_user=ops

Test connectivity before running a playbook. ansible-inventory --graph shows the resolved groups, while ansible all -m ping verifies name resolution and SSH access. Use a non-privileged user with tightly controlled sudo; document any privilege-escalation method so an operator can audit it.

Build an idempotent Fedora playbook

Idempotence means a second run leaves the system in the desired state without unnecessary changes. This example installs Nginx, creates a web root and keeps the service enabled:

- name: Configure a Fedora web server
  hosts: fedora_servers
  become: true
  vars:
    site_root: /srv/www/example
  tasks:
    - name: Install Nginx
      ansible.builtin.package:
        name: nginx
        state: present
    - name: Create the site root
      ansible.builtin.file:
        path: "{{ site_root }}"
        state: directory
        owner: nginx
        group: nginx
        mode: "0755"
    - name: Start and enable Nginx
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

The package module selects the native package manager, and state: present avoids reinstalling an existing package. The file and service tasks check their declared attributes, so they report changes only when needed. For configuration files, use copy or template with a source file and mode; reserve command for actions that cannot be expressed declaratively. Notify a handler when a template changes so a service reload occurs only after the configuration task succeeds.

For a related Fedora administration example, the walkthrough on CUPS print server setup shows packages and services handled as repeatable operations. Keep intent in the playbook, host-specific values in variables, and secrets in Ansible Vault instead of committing credentials to Git.

Test changes before they reach production

Run a syntax check first, then use check mode to preview changes. The diff option shows proposed file changes, and a limit lets you test one host or group:

ansible-playbook site.yml --syntax-check
ansible-playbook site.yml --check --diff --limit app-01
ansible-playbook site.yml --limit fedora_servers

Check mode does not execute ordinary changes, so it cannot prove that a service will start or that a user account will work. Treat it as a planning tool: review the output, run against a disposable Fedora VM, and keep a rollback path for risky operations. Tags such as packages, config and service let operators run a smaller, clearly defined slice.

Make the output auditable. Record the playbook version, target group, start time and changed hosts in a change log; all tasks passed without evidence is weak. The same discipline applies to figures published in a bonus claim rate statistics report, where the sample and definition matter more than the headline. A reliable run leaves a traceable record another administrator can reproduce.

Reusable patterns for daily administration

Use these configuration patterns when a change will be reused:

Use these operational safeguards for each deployment:

These habits make a playbook reusable across Australian sites without making it opaque. A Melbourne server and a Sydney server can share a role while differing in package mirrors, timezone or approved maintenance window. Keep those differences in variables, and document who may override them.

Make automation part of operations

Treat the playbook as maintained software. Store it in Git, require review for production changes, and run ansible-lint plus syntax checks in CI. Collections extend the built-in modules, so install the exact versions required by the project and review upgrades like other dependencies. A short runbook should identify the inventory, required credentials, expected handlers and the command for a narrow verification run.

Keep automation close to the people who own the service. Train administrators in Fedora administration, systemd, SSH and YAML, and let them read failures rather than hiding every error behind a dashboard. For organisations operating in the Australian market and supporting mixed RHEL, CentOS and Fedora estates, portable roles and clear inventories reduce the effort spent rediscovering which host needs which setting. Use Vault, scoped become rules and change records to keep access auditable.

The lesson to remember is simple: a dependable Fedora playbook is version-controlled, idempotent, tested in check mode and supported by evidence, making routine administration predictable for teams in every Australian city.