Build a Network Automation Lab (Containerlab, Python, Ansible)
Track: Networking
Network engineering is moving from the CLI to code, and the people who get hired now are the ones who can automate. You don’t need a rack of gear or a lab budget — a laptop runs a full virtual network you can break, fix, and automate. That lab, plus the scripts that configure it, is a standout portfolio piece.
What you’ll build: a virtual multi-device network lab with Containerlab, automated end to end — push device configuration with Python (Netmiko/NAPALM) and Ansible, validate reachability and state, and document the topology. The same automation runs against real Cisco/Arista gear; GNS3 or EVE-NG work in place of Containerlab.
“Network automation” is on nearly every modern network-engineer posting, and most candidates can only talk about it. A repo with a reproducible lab, config templates, and scripts that configure and verify the network proves you actually do it. It maps to the keywords these roles list: Cisco, routing, switching, TCP/IP, BGP/OSPF, Python, Netmiko, NAPALM, Ansible, network automation.
Skills & keywords you’ll demonstrate
Building a virtual topology with Containerlab (or GNS3/EVE-NG)
Templating device config with Jinja2 (hostnames, interfaces, routing)
Pushing config programmatically with Python (Netmiko) and Ansible
Validating state and reachability with NAPALM
Core networking — IP addressing, routing protocols (OSPF/BGP), switching
Starter repo
Clone github.com/OptimalMatch/resume-project-network-automation — a Containerlab topology, a Jinja2 config template, Python automation/validation stubs, and an Ansible inventory + playbook. Build it under your own account, committing per milestone. The lab is free and runs on a laptop.
Build it in milestones
Stand up the lab. Define a 2–3 node topology in Containerlab and bring it up. Commit.
Base config by hand. Configure interfaces and addressing manually, confirm links are up. Commit your notes.
Template it. Move the config into a Jinja2 template driven by a per-device variables file. Commit.
Automate the push. Render and apply the config with Python (Netmiko) or an Ansible playbook. Commit.
Routing & validation. Bring up a routing protocol (OSPF or BGP) and verify reachability/state with NAPALM. Commit.
Document. README with a topology diagram, how to run it, and what the scripts do. Commit.
Stretch goals
A CI job that spins up the lab and runs your validation as automated tests.
Config drift detection — compare running config against intended and report differences.
Network monitoring (SNMP/streaming telemetry) into a simple dashboard.
Put it on your résumé
“Built a reproducible virtual network lab (Containerlab) and automated device configuration with Python (Netmiko/NAPALM) and Ansible using Jinja2 templates.”
“Configured OSPF/BGP routing and wrote validation scripts that verify reachability and detect config drift.”
Update your résumé and check it with the free ATS resume score — network-engineering roles increasingly weight automation keywords.
Frequently asked questions
Do I need real Cisco gear or a lab budget? No. Containerlab runs a full multi-device network in containers on a laptop, for free. The Python and Ansible automation you write against it works unchanged against real Cisco/Arista equipment, and GNS3 or EVE-NG are drop-in alternatives.
Is network automation really expected of network engineers now? Increasingly, yes. Modern network-engineer postings list Python, Ansible, and automation alongside routing and switching. A project that shows you can configure and validate a network with code — not just the CLI — sets you apart from candidates who only mention it.