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 arc this module completes
Section titled “The arc this module completes”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.
What you need
Section titled “What you need”- 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
ansibleinstalled (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.
The lessons
Section titled “The lessons”| 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.
Checkpoint
Section titled “Checkpoint”- 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
Deliverable
Section titled “Deliverable”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.
Resources
Section titled “Resources”- Ansible documentation — start with “getting started,” ignore the rest until needed
- sops + age — modern secrets, minimal ceremony
- Woodpecker CI / Forgejo Actions — lightweight self-hosted pipelines
- Google’s Site Reliability Engineering book — read the chapter on toil