Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Module 16: Interview Prep — Lab Code

Four pre-broken environments for the mock incident lab, plus the incident-response stack and its process templates.

These are the real, runnable files from this module's labs. They are validated in CI, so they stay correct as tool versions move on.

The labs still show every file inline — type them out the first time, that's where the learning happens. Use these when you want to skip the transcription, when you're comparing your version against a reference, or when something isn't working and you need a known-good starting point.

⚠️ These environments are intentionally broken, and these files are the STARTING state, not the fixed one. Each fails in a specific, diagnosable way. The fixes live in the lab's "Expected Fix" sections — don't read those, or these files, before attempting the incident. That's the answer key.

These environments are intentionally broken. Each one fails in a specific, diagnosable way. Don't read the Compose files before attempting the incident — that's the answer key.


Contents

lab-01/

Crash-looping container, disk-filling app, misconfigured reverse proxy, and a DNS failure — each with its own Compose file.

lab-01/
├── Dockerfile.crash
├── Dockerfile.disk
├── backend.py
├── crash_app.py
├── diskfill_app.py
├── dns_app.py
├── docker-compose-incident1.yml
├── docker-compose-incident2.yml
├── docker-compose-incident3.yml
├── docker-compose-incident4.yml
└── nginx-broken/default.conf

lab-02/

The incident-response stack: nginx in front of a checkout API with a connection-pool leak, plus a load generator so customer traffic keeps arriving while you work. page.sh delivers the alert and starts your clock; the templates are what a real incident produces.

lab-02/
├── api/Dockerfile
├── api/app.py                     # ⚠️ the answer key — don't read it before the incident
├── api/requirements.txt
├── docker-compose.yml             # LEAK=1 is the bad release; LEAK=0 is the rollback
├── nginx/nginx.conf               # logs upstream status, so proxy vs backend is one line
├── page.sh
└── templates/
    ├── postmortem.md
    └── status-update.md

Using these files

# From the repo root — copy a lab's files into your working directory
mkdir -p ~/devops-labs/16-interview-prep && cd ~/devops-labs/16-interview-prep
cp -r /path/to/the-devops-handbook/16-interview-prep/code/lab-01/. .

Then follow the lab. Every command in the lab assumes these filenames and this layout.