N

homelab · case study

Automated Linux Server Management with Ansible

Ended manual Linux installs in the home lab. Every server bootstrap and service deploy now runs through Ansible roles, executed by GitLab CI.

What shipped.

  • /01

    Reusable Ansible roles for new-host bootstrap and BIND DNS deployment.

  • /02

    Self-hosted GitLab handling source control and pipeline execution for every Ansible run.

  • /03

    CI pipelines triggering Ansible playbooks on change, no more ad-hoc SSH-and-edit.

  • /04

    Faster, more consistent rebuilds when hardware changes.

How it fits together.

Hover a node to highlight its connections. Click one to read what it does and why it is there.

Managed Linux fleettriggersexternalMe (commits)gitopsGitLab CE + CIgitopsAnsiblecomputeBootstrap rolecomputeBIND DNS rolecomputeLinux hosts

The brief

The homelab was growing past what I wanted to maintain by hand. Every reinstall meant running the same dozen commands, slightly differently each time. The fix was to stop doing that.

What I built

  • Bootstrap role that takes a freshly installed Linux host to a known-good baseline, covering users, hardening, packages and monitoring agents.
  • BIND DNS role for the internal authoritative name servers.
  • GitLab CI running every change through pipelines that lint, dry-run and then apply.

Why it mattered

The discipline of writing idempotent roles that produce a known-good state, every time, regardless of what was on the host before, is the same discipline that matters when you are doing Ansible-driven config management on a PCI fleet with an active audit cycle. The homelab is where I built that muscle before it had consequences.