Skip to content

Module 7 · Automation & CI/CD

You built everything by hand so you’d understand it. Now you’ll automate it so you never have to do it by hand again. That single sentence is the entire DevOps philosophy, and this module makes it muscle memory. The payoff is concrete and a little magical: by the end you’ll be able to destroy your whole homelab and rebuild it from code — and a push to your docs repo will deploy your site automatically, with no manual steps.

This is the “Dev” in DevOps arriving in force. Everything you configured by hand in Modules 2–6 becomes text in a repository that is the source of truth for your infrastructure.

The curriculum has repeated one shape — build by hand, then automate — and here it pays off in full:

graph LR
    Hand[Built by hand<br/>Modules 2–6] -->|now encode it| Code[Infrastructure as Code<br/>Ansible + Compose in git]
    Code -->|one command| Rebuild[Whole homelab<br/>rebuilt from scratch]
    Code -->|push triggers| CICD[CI/CD pipeline<br/>auto-deploys your site]
    CICD --> Site[Your live docs site]

You did it manually to learn it. You automate it because that’s the profession: manual work doesn’t scale, isn’t repeatable, and can’t be reviewed. Code does all three.

  • Your homelab from Module 6: a hardened server (or Proxmox host with VMs), services in Compose files, a self-hosted git server, your live site.
  • A workstation with ansible installed (your Module 0 machine).
  • A few throwaway VMs on your Proxmox host (Module 4) to test automation against — because the whole point is proving you can rebuild from nothing.
Lesson Topic Time
7.1 · Scripting Glue Robust shell + Python, idempotency, scheduling 4–5 hrs
7.2 · Infrastructure as Code Ansible: declarative, idempotent server config 6–8 hrs
7.3 · GitOps & Secrets The repo as source of truth; secrets done right 4–5 hrs
7.4 · CI/CD Pipelines Automated build → test → deploy, self-hosted 5–7 hrs
Labs The five graded exercises 10–14 hrs

Total: roughly 30–40 hours, or 3–4 weeks part-time.

  • I write idempotent automation and can explain why idempotency matters
  • My server’s entire configuration, including hardening, lives in an Ansible repo
  • I can rebuild my homelab from code onto fresh VMs
  • No plaintext secret exists in any of my repositories
  • A push to my docs repo deploys the site automatically, with no manual steps
  • I use pull requests and review my own changes before merge

An Ansible repository that rebuilds Modules 2–6 from scratch, plus a working CI/CD pipeline that auto-deploys your site. Record a short screen capture of a bare VM becoming a configured server via one command — it’s the most persuasive thing in your portfolio. Full spec in Lab 5.