Challenges
Broken machines to fix in a real Linux VM that runs in your browser. Read the ticket here, then solve it on the interactive site.
- Forbidden Handbook Easy
A permissions clean-up locked everyone out of the internal handbook. Give the web server back exactly the access it needs, and not one bit more.
- Noisy Neighbour Easy
Something is stuffing the invoicer log with junk at a furious pace. Find the writer, silence it for good, and keep the log intact for the auditors.
- Friday Deploy Easy
The deploy of parcels-api 3.1 "went out fine", yet the API is dead. The init script and the app both refuse to start with errors that make no sense at first.
- Open Door Easy
An audit found three ways for any user on this box to become root. Close all three without breaking the nightly cleanup job.
- Leaky Env Easy
The billing service's database password is hard-coded in a script every user can read. Move it into a protected env file the service can still load.
- Tampered Tarball Easy
One of last night's release artifacts does not match its published checksum, and it is already installed. Find it, get a clean copy and reinstall.
- Pipeline That Lies Easy
Build 1042 failed its tests, the pipeline printed SUCCESS anyway and shipped the broken build. Make the pipeline stop at the first failing step.
- Silent Alarm Easy
The data disk is almost full, yet the disk alert never fired. Find out why the alarm stays silent and fix it, without making it cry wolf.
- Crash on Start Easy
The new orders-api container dies a second after it starts. Read what it says, give it what it needs and get it serving on port 8080.
- Stuck Lock Easy
Every terraform command fails with "Error acquiring the state lock". Find out who holds it, make sure nobody is really applying, release it and ship the pending change.
- Restore Point Medium
A bad edit broke the shop's config and the nightly backups are a pile of tarballs. Find the last good one and restore just that file, with the right owner and mode.
- No Space Left Medium
The ledger service died with "No space left on device". Someone already deleted a big file, yet df still says the volume is full.
- Port Squatter Medium
The new docs site cannot start because something already sits on port 8080, and killing it only works for a second.
- Rotten Rotation Medium
The nightly log rotation script skips some logs, deletes the wrong archives and still reports success. Fix the script, not the logs.
- Uninvited Guest Medium
Someone brute-forced their way in last night and left themselves several ways back. Read the logs, then evict them for good.
- Rotate It Medium
A live payments API key leaked into logs, a backup and a shell history. Rotate the key, keep payments working, and scrub every copy of the old one.
- Poisoned Mirror Medium
The artifact fetcher grabs whatever the first mirror serves, and the first mirror has been poisoned. Teach the script to verify, fall back and fail closed.
- Fast Rollback Medium
Release 42 is returning errors and the deploy script copies files in place, so there is no quick way back. Roll back now, then make deploys atomic and safe.
- Latency Hunt Medium
Users say checkout is "sometimes broken". There is no dashboard yet, only an access log. Find the failing endpoint, count the damage and build the error-rate tool.
- Image Pull Panic Medium
The upgrade of shop-web to nginx 1.27 left every pod stuck and the site down. Find out why the pods never start and finish the rollout properly.
- Rename Without Destroy Medium
A tidy-up pull request renamed two resources. Now the plan wants to delete and recreate the payment service's config files. Make the rename a move, with zero destroys.
- Hot-fix Drift Medium
The nightly drift job turned red. Find which file was changed by hand, read the incident ticket, and make code and reality agree without undoing the approved hot-fix.