Automation Labs
Hands-on labs for CCNA Automation (200-901). Each lab runs in your browser: type real commands, see real output, the lab marks itself done. No install, no network, no GitHub or cloud account needed.
- Lab Domain 1.0 · Software Development and Design
Git basics: your first workflow
Set your identity, create a repo, make two commits, read the log. 13 scripted steps, real output on every step, zero install.
~5 min · 13 steps · FoundationalOpen the lab → - Lab Domain 1.0 · Software Development and Design
Git branches: clone, branch, merge, diff
Clone a repo, create a feature branch, commit on it, switch back to main, merge the branch in, delete it, read the log. Covers Cisco 1.8 Git operations end-to-end.
~6 min · 10 steps · FoundationalOpen the lab → - Lab Domain 1.0 · Software Development and Design
Parse JSON and YAML in Python
Launch Python, import json and yaml, parse a VLAN definition into a dict, pull out a field, pretty-print it back. Covers Cisco 1.1 and 1.2 (data formats + parsing).
~6 min · 11 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
HTTP essentials with curl
Hit a demo REST API: GET, 404, 401, 500, POST with JSON body, -i for headers, Bearer auth. Covers Cisco 2.1, 2.4 and 2.6.
~6 min · 10 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
REST API: docs to a 201
Build a request against a Meraki-style demo API. Watch 401 to 404 to 400 to 201 as you fix the request piece by piece. Covers Cisco 2.1 and 2.5.
~7 min · 6 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
Python requests: first script
Real Python REPL: import requests, GET /devices, parse JSON, POST with json=, use auth tuple. Covers Cisco 2.9.
~6 min · 10 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
REST API authentication
Try Basic (-u), API key (-H "X-API-Key: ..."), Bearer token. Watch 401 flip to 200 as you add each. Covers Cisco 2.7.
~5 min · 7 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Meraki Dashboard API: first calls
List orgs, networks, devices, clients; create a network. curl and Python requests. Covers Cisco 3.9.a and 3.9.c.
~7 min · 10 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Webex Messages API
GET /people/me, /rooms, /memberships, POST /messages. curl and Python. Covers Cisco 3.9.b.
~6 min · 9 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
RESTCONF: read and change an interface
curl against ietf-interfaces YANG on a demo IOS XE router. GET all, GET one, PATCH enabled. Covers Cisco 3.6 and 3.8.
~5 min · 4 steps · FoundationalOpen the lab → - Lab Domain 4.0 · Application Deployment and Security
Bash basics for network engineers
pwd, ls, mkdir, echo, cat, grep, wc, cp, export, env. 12 objectives in a real shell. Covers Cisco 4.11.
~5 min · 12 steps · FoundationalOpen the lab → - Lab Domain 4.0 · Application Deployment and Security
Docker basics: pull, run, build
docker pull / run / ps / logs / exec / stop / rm / build from a pre-seeded Dockerfile. Covers Cisco 4.6 and 4.7.
~6 min · 12 steps · FoundationalOpen the lab → - Lab Domain 5.0 · Infrastructure and Automation
Run and interpret an Ansible playbook
cat a 3-task Cisco playbook, --check dry-run, apply, re-apply to see idempotency. Covers Cisco 5.8.
~5 min · 6 steps · FoundationalOpen the lab → - Lab Domain 5.0 · Infrastructure and Automation
Terraform basics: init, plan, apply
Pre-seeded main.tf with 2 AWS resources. init → plan → apply → re-plan (idempotent). Covers Cisco 5.5 and 5.6.
~5 min · 8 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
API pagination and rate limits
Paginate through 9 devices three at a time, trigger a 429, read Retry-After. Then same in Python. Covers Cisco 2.3.
~5 min · 8 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
Webhooks: subscribe, receive, respond
Register a Webex webhook, simulate the sender POST, fetch the full message. Covers Cisco 2.2.
~4 min · 3 steps · FoundationalOpen the lab → - Lab Domain 2.0 · Understanding and Using APIs
Troubleshoot a REST request
401 → 401 → 403 → 404 → 400 → 201. Fix one thing at a time, read the body at each step. Covers Cisco 2.5.
~5 min · 6 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Build the Cisco SDK pattern with requests
BASE constant + HEADERS dict + .get() methods — the shape every Cisco SDK follows. Covers Cisco 3.1.
~5 min · 8 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Interpret YANG and RESTCONF responses
cat a YANG snippet, GET config AND state trees, parse in Python. Covers Cisco 3.8 and 5.11.
~5 min · 7 steps · FoundationalOpen the lab → - Lab Domain 4.0 · Application Deployment and Security
pytest: 4 pass, 1 fail
cat a 5-test file, run pytest default + -v, read PASSED and FAILED output. Covers Cisco 4.5.
~4 min · 5 steps · FoundationalOpen the lab → - Lab Domain 4.0 · Application Deployment and Security
Interpret a CI/CD pipeline
cat a GitHub Actions workflow + .gitlab-ci.yml, count stages. Covers Cisco 4.4.
~4 min · 6 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Catalyst Center: token + devices
POST for a token, GET /network-device, filter by role, repeat in Python. Covers Cisco 3.9.a (Catalyst Center branch).
~5 min · 7 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
ACI APIC: login + class queries
POST aaaLogin, GET /class/fvTenant, GET /class/fabricNode, DN query for one tenant. Covers Cisco 3.9.a (ACI branch).
~4 min · 4 steps · FoundationalOpen the lab → - Lab Domain 3.0 · Cisco Platforms and Development
Catalyst SD-WAN: login + devices
Form-encoded /j_security_check, fetch CSRF, GET /dataservice/device. Covers Cisco 3.9.a (SD-WAN branch).
~3 min · 3 steps · FoundationalOpen the lab →
Free-play automation console
A full browser terminal running the same engine as every lab here. Type any bash, git or Python command and the engine responds for real. No objective, no grading.
No sign-up. Runs in your browser, even on a phone. Looking for Cisco IOS troubleshooting labs instead? See CCNA labs →
