Platform & Infrastructure Engineer — your first job
A hands-on ramp from a blank terminal to shipping real infrastructure. You learn by doing every step in a safe sandbox, and earn a certificate of completion for every track you finish. Follow the tracks in order for the full ramp, or dive straight into whatever you need next. Each one stands on its own.
By the end, you can
- Work confidently in a Linux shell and automate tasks with Bash
- Collaborate with Git the way every team expects
- Turn manual ops work into tested Python tools
- Secure services with JWTs, TLS and SSH, and know how each one breaks
- Reason about cloud building blocks — compute, storage, networking, IAM
- Build and ship real infrastructure as code with Terraform, and configure servers with Ansible
- Walk into interviews able to explain things you actually built
Foundations
Start here — the shell, scripting, and habits every infra job assumes.
Linux & the Command Line
Live in a real shell: the filesystem, permissions, and the tools every infra job assumes you already know — run real commands in a safe sandbox.
Bash & Shell Scripting
Automate the boring parts — variables, output, loops, and conditionals — by writing real scripts and running them in the browser.
Core skills
Collaboration, a real language, and the cloud building blocks underneath it all.
Version Control with Git
Branch, merge, resolve conflicts, and collaborate the way every engineering team expects on day one.
Python for Operations
Glue systems together: parsing data, driving other tools, and the standard-library patterns that show up in real ops work.
Security Essentials: JWT, TLS & SSH
The security every infrastructure engineer is expected to know: tokens, certificates and secure shells, taken apart, attacked and fixed with real openssl, PyJWT and OpenSSH.
Cloud Fundamentals (AWS)
The mental model behind the cloud — compute, storage, networking, and IAM — so infrastructure code means something. Drive real AWS APIs with the CLI against a safe mock cloud.
Production
Ship real infrastructure as code, the way teams run it.
Infrastructure as Code: Terraform
Build, plan, and apply real infrastructure — state, modules, remote backends, and CI workflows — entirely in the browser, no cloud bill.
Configuration Management with Ansible
Describe a server's desired state and converge to it — playbooks, variables, templates, handlers, and roles — with idempotent runs you can re-apply safely. The declarative sibling of Terraform.
On the way
Containers & Kubernetes
Package applications into containers and run them at scale — images, pods, deployments, services, and the kubectl workflow platform teams use every day.
What Pro unlocks, track by track
Every track starts free — the first lessons are yours, no card required. Pro unlocks the depth across all of them: production Terraform, the full Linux, Bash, Git and Python toolkits, JWT, TLS and SSH security, real AWS, and Ansible. Here's the free → Pro boundary for each.
Infrastructure as Code: TerraformCert trackFree → Pro
Free — you can do this
FreeThe core workflow
init → validate → plan → apply → destroy, and why you always plan first.
HCL & resources
Write real config: resources, variables, outputs, and data sources.
Dependencies & the graph
Implicit references vs explicit depends_on, and creation order.
State, for real
Drift, the deletion trap, and recovering a resource with import — by breaking it safely.
A capstone from a brief
A small stack you build from a written brief, plus a résumé bullet that describes it.
Pro — what you unlock next
ProRemote state & locking
Author a real S3 backend with DynamoDB locking and watch real Terraform init, lock, and store state — exactly where the free track ends.
Modules
Author and compose local modules with real namespaced state, then instantiate them twice — the unit of reuse on every team.
Import & refactor
Adopt hand-made infrastructure with config-driven import blocks, and rename resources safely with moved blocks.
A production capstone
Ship a stack from a written brief — backend, module, variables, and dependent resources — validated end to end by real Terraform.
Real AWS workflows
Real init / plan / apply against a sandboxed AWS endpoint: genuine provider behavior, no bill, no blast radius.
Multiple environments
Promote one parameterized configuration across dev and prod — validated variables, environment-keyed config, and why directories beat workspaces.
CI/CD for Terraform
Run the pipeline's jobs yourself — plan as the pull-request review gate, apply on merge — through shared state and locking, plus OIDC and saved-plan mechanics.
Testing & policy-as-codecoming soon
terraform test, policy-as-code (OPA/Sentinel), and secrets management.
Aiming for the Terraform Associate (004)? Check your exam-readiness →
Linux & the Command LineFree → Pro
Free — you can do this
FreeNavigate the filesystem
ls, cd, cat, and the hidden-dotfile convention every box assumes you know.
Pipes & filters
Compose small tools with | — grep, wc, sort — the Unix mindset.
Read the manual
man, man | grep, apropos/whatis and sections — look anything up without a browser.
Pro — what you unlock next
ProRedirection & streams
stdout vs stderr, 2>&1 (and why order matters), /dev/null, tee, and process substitution.
Files, links & inodes
Safe mkdir/cp/rm, stat and inodes, hard links vs symlinks, and the release-symlink swap.
Find files & search trees
find by name/type, grep -r through contents — names vs contents.
Permissions & ownership
Read an ls -l mode, chmod (symbolic + octal), and fix the execute-bit gotcha.
Transform text
sed substitution, awk columns, and cut / sort | uniq -c / tr in a pipeline.
Bulk operations
xargs (-I {}, NUL-safe find -print0 | xargs -0) to act on whole file sets.
Archives & compression
tar create/list/extract, --exclude, gzip levels, and dated, checksummed backups.
fstab & mounts
findmnt, the six fstab fields, adding a disk by UUID with nofail, and fixing a line before it breaks the boot.
Disk & system health
df, du, find big files, free vs cgroup limits, load and top processes, a one-line report.
Processes & top
Read top's summary, catch CPU and memory hogs, stop a runaway with signals, and renice instead of kill.
Reading logs
/var/log, tail and grep by level and time window, SSH brute force in auth.log, zgrep, tail -f, journalctl.
Environment & PATH
export and inheritance, per-command variables, PATH lookup, ~/bin, aliases vs functions.
Log-triage capstone
Build one pipeline that finds the worst-offending endpoint in a real log.
Bash & Shell ScriptingFree → Pro
Free — you can do this
FreeVariables & output
Assignment, quoting (the window vs the wall), echo and redirection.
Conditionals & tests
if with [ … ], file/string tests, and &&/|| chaining.
Loops & control flow
for/while over lists, arithmetic with (( … )), and clean iteration.
Pro — what you unlock next
ProFunctions & arguments
Reusable functions, positional params, and getopts flag parsing.
Arrays & parameter expansion
Safe "${arr[@]}" iteration and in-shell string surgery.
Pattern matching
case dispatch, nullglob-safe globs, [[ =~ ]] with BASH_REMATCH, and numeric version compares.
Reading files line by line
IFS= read -r, CSV and config parsing, the pipe-subshell trap, and mapfile.
Associative arrays
declare -A lookups, key checks with defaults, and one-pass counting with sorted output.
Strict mode & exit codes
set -euo pipefail, $?, and the contract CI uses to pass or fail.
Debugging scripts
bash -n, bash -x with a line-numbered PS4, ERR traps, and a real word-splitting bug fixed.
Safe unattended scripts
mktemp + cleanup traps, atomic writes via mv, flock against overlapping runs, idempotency.
Processes & signals
Background jobs, $!, wait, and trap-based cleanup you'd run unattended.
Build-a-script capstone
A strict-mode, data-driven health-check script from a brief.
Version Control with GitFree → Pro
Free — you can do this
FreeCommits
Stage, commit, and read a clean history — the unit of work on every team.
Branching & merging
Branch, merge, and reason about where work lands.
Pro — what you unlock next
ProUndo & rewrite history
Reset, revert, amend — get out of trouble without panic.
Resolve merge conflicts
Read conflict markers and finish a real merge by hand.
Remotes
push/clone against a remote (taught offline via a local bare repo).
Rebase & cherry-pick
Diverge → rebase → fast-forward, and pick a single commit across branches.
.gitignore
Ignore patterns + check-ignore so the wrong files never get committed.
Capstone
Drive a realistic multi-step Git workflow from a brief.
Python for OperationsFree → Pro
Free — you can do this
FreeVariables & output
Types, f-strings, and the text-vs-number bug that bites everyone.
Lists & dicts
The two data structures ops code lives in.
Pro — what you unlock next
ProFunctions & test-driven Python
Write functions and make an in-file assert suite pass.
pytest
Make a real pytest suite green, then write parametrize + pytest.raises tests.
JSON & CSV
Parse and emit the two formats infra data actually arrives in.
Regex parsing
re findall/search/sub over real log lines.
Errors & exit codes
try/except, raising on bad input, and signaling failure to the OS.
subprocess & CLIs
Shell out safely with subprocess, and build argparse CLIs with dataclasses.
Capstone
A small, tested Python tool built from a brief.
Security Essentials: JWT, TLS & SSHFree → Pro
Free — you can do this
FreeEncoding, hashing, HMAC & encryption
base64, SHA-256, HMAC and AES with openssl, and which guarantee each gives.
Anatomy of a JWT
Decode a real token by hand: base64url, registered claims, expiry, signature bytes.
Pro — what you unlock next
ProKeys & digital signatures
Ed25519, ECDSA and RSA keys; sign, verify, and catch a tampered release.
HS256 from scratch
Sign and verify a JWT with only openssl, then cross-check it with PyJWT.
Validating claims
Algorithm allow-list, aud/iss, expiry with leeway, required claims, and scopes.
JWT attacks
Forge alg:none and RS256→HS256 key-confusion tokens, crack a weak secret, then fix the verifier.
JWKS & key rotation
ES256 with kid, a published JWKS, and rotating keys without downtime.
Certificates up close
Subject, SANs, key usage, expiry checks, fingerprints, and PEM/DER/PKCS#12.
Build your own CA
Root → intermediate → leaf with openssl, and why chains break.
The TLS handshake, live
TLS 1.3 message by message with s_client, TLS 1.2, SNI and ALPN.
Debugging broken TLS
Expired, wrong host, missing intermediate, self-signed, key mismatch: diagnosed from the error.
Mutual TLS & revocation
Client certificates, a CRL the server enforces, and a live OCSP responder.
SSH keys & host verification
Ed25519 keys, authorized_keys, known_hosts, and a simulated man-in-the-middle.
SSH config, agents & jump hosts
~/.ssh/config, ssh-agent, ProxyJump through a bastion, and the agent-forwarding risk.
SSH tunnels & file transfer
-L, -R and -D forwarding, scp/sftp, and ControlMaster multiplexing.
SSH hardening & certificates
sshd -T audits, forced-command keys, and SSH user and host certificates.
Capstone
Secure a service end to end: private CA, TLS, ES256 JWTs with a JWKS, and SSH-only access.
Cloud Fundamentals (AWS)Free → Pro
Free — you can do this
FreeAuthenticated AWS calls
Drive the aws CLI against a mock cloud; sts get-caller-identity + jq.
Your first bucket
S3 mb/cp/ls — create and inspect real-shaped resources.
Pro — what you unlock next
ProIAM & policies
Users + least-privilege policies, attached and verified.
EC2 & networking
VPC → subnet → run-instances; the compute & networking mental model.
DynamoDB
create-table, put/get, and scan a NoSQL table.
Messaging (SQS & SNS)
Queue round-trips and SNS→SQS pub/sub fan-out, proven end to end.
Multi-service capstone
Wire an S3 + DynamoDB + IAM backbone from a brief.
Configuration Management with AnsibleFree → Pro
Free — you can do this
FreeYour first playbook
The declarative, idempotent, agentless model — plays, tasks, modules.
Tasks & modules
copy/file by desired state, and the changed-vs-ok outcome.
Pro — what you unlock next
ProIdempotency
Desired-state tasks that converge a machine and are safe to re-run.
Variables, facts & templates
vars, gathered facts, and Jinja2 templates rendered to config.
Loops & conditionals
loop + when to do one task across many items, only where it applies.
Handlers & notify
Trigger a restart only when something actually changed.
Roles
Package automation into reusable roles and parameterize per environment.
Capstone
Configure a service end to end — vars, template, loop, handler — from a brief.