Free tech learning for everyone, from basics to pro

ProjectsLabsIntermediate

Project: a network automation portfolio

In short: Employers want network engineers who can automate. This project turns repetitive tasks into small, well-documented tools tested against a virtual lab, so that a reviewer can read, run and trust your code.

Goal and requirements

The goal is a set of three to five focused automation projects that solve tasks network teams really do, such as backups, compliance checks and VLAN changes. Quality matters more than quantity: one tool that is safe, tested and documented beats ten half-finished scripts.

  • A virtual lab: containerlab with free network operating system images (for example Nokia SR Linux or Arista cEOS), Cisco Modeling Labs, or GNS3/EVE-NG. Never test against a production network.
  • Tools: Python 3 with Netmiko, Nornir or NAPALM; Ansible with the relevant network collections; Jinja2 templates; Git.
  • Safety: credentials in environment variables or Ansible Vault, never in code; a dry-run or check mode for anything that changes config.
Portfolio repository layoutREADMEwhat, why, how to runinventory/hosts and groupsscripts/ and playbooks/Python and Ansibletemplates/Jinja2 configstests/ and CIlint, unit tests
Figure 1. A clear repository layout lets a reviewer understand and run your work in minutes.

Project ideas and design

ProjectWhat it showsRelated note
Nightly config backup to GitConnections, files, scheduling, diffsconfig backup
VLAN provisioning from YAMLData models, templates, idempotenceVLAN provisioning
Compliance and drift reportParsing, rules, reportingcompliance and drift
Interface error reportStructured data, thresholdsinterface errors
Inventory to CSV or NetBoxAPIs, source of truthsource of truth

Build plan

From idea to portfolio pieceProblemmanual taskLabcontainerlab,CMLScriptNetmiko,AnsibleTestdry run, CIPublishREADME, demo
Figure 2. Each project starts from a real manual task and ends as a documented, tested repository.
  1. Set up the lab topology as a file in the repository so anyone can recreate it.
  2. Create a virtual environment and pin dependencies in requirements.txt.
  3. Write the first project with small functions, logging and clear error handling for unreachable devices.
  4. Add linting and a few unit tests (for example, that a template renders the expected lines), and run them in CI (continuous integration) on every push.
  5. Write the README: problem, design, how to run, example output description, limitations.
  6. Repeat for the next project, reusing the inventory and lab.
sudo containerlab deploy -t lab.clab.yml
python3 -m venv .venv
source .venv/bin/activate
pip install netmiko nornir nornir-netmiko jinja2 pytest ruff
pip freeze > requirements.txt
ruff check .
pytest -q
ansible-galaxy collection install cisco.ios arista.eos
ansible-playbook -i inventory/hosts.yml playbooks/vlans.yml --check --diff
ansible-lint playbooks/
sudo containerlab destroy -t lab.clab.yml

Deliverables and how to present it

  • One public repository per project, or one well-organised mono-repository, each with a README and topology file.
  • Passing CI badges and tests; a short screen recording or an asciinema-style demo.
  • A sample report or diff produced by the tool, with lab hostnames only.

On a CV: "Wrote a Nornir-based compliance checker that audits 20 lab devices against 15 rules and reports drift to CSV; tested in CI." In interviews, explain one design decision, such as why you used check mode before every change. Never publish your employer's configurations or hostnames, even edited.

Practice

Why test automation against a virtual lab instead of real devices?
Mistakes in automation spread to many devices at once; a lab lets you break things safely and rebuild in minutes.
Where should device credentials live in an automation project?
In environment variables, a secrets manager or Ansible Vault, never hard-coded or committed to Git.
What does --check --diff do in Ansible?
It runs the playbook in dry-run mode and shows what would change, without applying any changes.

Key takeaways

  • Automate real, common network tasks, not toy examples.
  • Keep the lab topology in the repository so it is reproducible.
  • Keep secrets out of code; use dry runs before changes.
  • Add tests, linting and CI to show engineering discipline.
  • Write a README that lets a reviewer run it quickly.
Tracks your learning on this device only. See your progress on the learning paths.

About the author

Mohamed Fayas

Founder of FM TecHub. CCNA certified, with a BTEC HND in Network Engineering, and BEng (Hons) in Computer Networking and Cloud Security. He writes practical, plain-English guides on networking, security and cloud.

More about the author

Original content written by Mohamed Fayas for FM TecHub. © 2026 FM TecHub. You're welcome to share a link to this page; please don't copy the text elsewhere without permission.

Stay up to date by email

New notes, tools and security news from FM TecHub, explained simply. Free.

We only use your email to send these updates. See our privacy policy.