Network automation practice labs
27 guided labs that take you from Bash, Git and data formats to Python with Netmiko, NETCONF, RESTCONF and YANG, Ansible and Jinja2, model-driven telemetry, EEM, testing, secure automation and an MCP tool server for AI agents. You work from a ready-built Linux workstation against real Cisco IOS XE and IOS routers. Six multi-vendor labs take the same skills beyond Cisco: NAPALM across IOS, EOS and Junos, Junos NETCONF and PyEZ, Arista eAPI, the AOS-CX and RouterOS REST APIs, and Ansible across four vendors.
- Guided labs
- 27
- Follows
- Cisco CCNA Automation (200-901) and CCNP Automation topics
- Runs every lab
- Lite
- Devices
- IOSv, EVE-NG GUI server, CSR 1000v, vEOS, vSRX NextGen template, RouterOS and AOS-CX virtual switch
Who these labs are for
For network engineers moving into automation, and anyone preparing for Cisco’s CCNA Automation (200-901) or the CCNP Automation exams ENAUTO (300-435 v2.0) and AUTOCOR (350-901 v2.0). You need basic IOS CLI skills; the first labs assume no programming experience.
Tools CloudLabBox doesn’t host, such as pyATS, GitLab, Terraform and controller platforms, are taught with named stand-ins: Netmiko snapshots, make as the pipeline and a mock controller.
The 27 labs
Every lab in the folder, as the workspace lists them, with what each runs and the smallest plan that fits. Read on 2 November 2026.
Network automation course 27 labs
Shared folderNetwork Automation - CCNA and CCNP Automation guided labs
One skill per lab, then two troubleshooting labs and a capstone that delivers a change through a pipeline from a source of truth. The starter files are already on the workstation.
-
01Your automation workstation - Bash SSH keys and management ports
Set up the Linux workstation you will automate from: Bash files, pipes and environment variables, a syslog report, a port checker that tells SSH, HTTPS and NETCONF apart, SSH keys on IOS and IOS XE, and a backup script that runs without a password.
1× CSR 1000v, 1× IOSv, 1× EVE-NG GUI server
3 vCPU, 5,632 MBFits LiteRuns in the free demo
-
02Data formats - JSON XML and YAML in Python
Read the same interface data as JSON, XML and YAML, parse each into identical Python structures, avoid the classic YAML traps, then do it again with live RESTCONF data from an IOS XE router.
1× CSR 1000v, 1× EVE-NG GUI server
2 vCPU, 5,120 MBFits LiteRuns in the free demo
-
03Git for network configurations - branch merge squash cherry-pick and revert
Run a real team workflow on a repository of router configurations: clone, branch and commit a change, merge with a conflict, squash a branch, cherry-pick one fix, revert a bad commit, survive a rejected push, tag a baseline and deploy it to two routers.
2× IOSv, 1× EVE-NG GUI server
3 vCPU, 2,048 MBFits LiteRuns in the free demo
-
04HTTP and REST with RESTCONF - curl status codes and Python requests
Take a real router's REST API apart with curl: the HTTP request and response, authentication, media types, URLs built from YANG, every write method and its status code, a request that fails three different ways, and an RPC, then read it all from Python with requests.
1× CSR 1000v, 1× EVE-NG GUI server
2 vCPU, 5,120 MBFits LiteRuns in the free demo
-
05Controller-style REST APIs - tokens API keys pagination rate limits and webhooks
Write a Python client for a controller-style REST API that handles token and API-key authentication, every page of a paginated list, 429 rate limits, expired tokens, an asynchronous job and signed webhooks.
1× EVE-NG GUI server
1 vCPU, 1,024 MBFits LiteRuns in the free demo
-
06Python and Netmiko - CLI automation over SSH
Automate three routers over SSH with Python and Netmiko: gather facts, back up configurations, push interface settings from a YAML file, verify with pings, and run against every device in parallel while handling the ones that fail.
2× IOSv, 1× CSR 1000v, 1× EVE-NG GUI server
4 vCPU, 6,144 MBFits LiteRuns in the free demo
-
07Parse CLI output with TextFSM ntc-templates and TTP
Turn show-command text into structured data: ntc-templates for interfaces, OSPF and CDP, a TextFSM template you write yourself, and a TTP template for the running configuration, then use the results to validate the design and enforce an SSH policy.
3× IOSv, 1× EVE-NG GUI server
4 vCPU, 2,560 MBFits LiteRuns in the free demo
-
08YANG models - read modules and trees then build XML and JSON payloads
Learn to read YANG the way the exam and real work need: find which models a router supports, download the modules themselves, read an RFC 8340 tree, then build XML and JSON payloads from the tree alone and let the device validate them, and compare the IETF, Cisco native and OpenConfig views of one interface.
1× CSR 1000v, 1× EVE-NG GUI server
2 vCPU, 5,120 MBFits LiteRuns in the free demo
-
09NETCONF with ncclient - read change and commit IOS XE configuration
Speak NETCONF by hand over SSH, then with Python's ncclient: read configuration and state with filters, change interfaces and NTP with edit-config, handle rpc-errors and the delete/remove operations, commit through the candidate datastore, and save.
1× CSR 1000v, 1× IOSv, 1× EVE-NG GUI server
3 vCPU, 5,632 MBFits LiteRuns in the free demo
-
10RESTCONF configuration management - desired state native models and idempotency
Manage an IOS XE router's interfaces, OSPF and static routes as a list of RESTCONF resources in YAML: discover the JSON with the 'configure once, read back' technique, choose PUT or PATCH, and build an apply script that only changes what differs, then prove it by forming an OSPF adjacency with a neighbour.
1× CSR 1000v, 1× IOSv, 1× EVE-NG GUI server
3 vCPU, 5,632 MBFits LiteRuns in the free demo
-
11Jinja2 templates and a YAML source of truth
Generate complete router configurations from a YAML source of truth with Jinja2: loops, conditionals, whitespace control, built-in and custom filters, macros, template inheritance and strict undefined variables, then deploy them to three routers and prove OSPF and the intended path.
3× IOSv, 1× EVE-NG GUI server
4 vCPU, 2,560 MBFits LiteRuns in the free demo
-
12Ansible for IOS and IOS XE - inventory ad-hoc commands facts and ios_config
Build an Ansible project for three routers from scratch: an inventory with groups and variables, ad-hoc commands, a facts playbook that writes JSON reports, and a configuration playbook with check mode, diffs, backups, saving and verification that is idempotent on the second run.
2× IOSv, 1× CSR 1000v, 1× EVE-NG GUI server
4 vCPU, 6,144 MBFits LiteRuns in the free demo
-
13Ansible in depth - Vault resource modules NETCONF and RESTCONF modules compliance
Take the team's Ansible project further: encrypt the credentials with Ansible Vault, configure interfaces, addresses and OSPF from structured host data with resource modules, manage the IOS XE router over NETCONF and RESTCONF, and enforce a configuration-compliance policy with automatic remediation.
2× IOSv, 1× CSR 1000v, 1× EVE-NG GUI server
4 vCPU, 6,144 MBFits LiteRuns in the free demo
-
14Model-driven telemetry on IOS XE - dial-in dial-out and webhook alerts
Stream data out of an IOS XE router instead of polling it: a dial-in subscription over NETCONF, configured dial-out subscriptions created three ways (CLI, NETCONF and RESTCONF), a collector that sees the router connect, and a small pipeline that turns telemetry into webhook alerts.
1× CSR 1000v, 1× EVE-NG GUI server
2 vCPU, 5,120 MBFits LiteRuns in the free demo
-
15On-box automation with EEM - backups self-healing tracking and guard rails
Automate inside the router with Embedded Event Manager: a manual backup applet, a syslog-triggered applet that undoes a mistaken shutdown, IP SLA tracking that alerts when a neighbour disappears, and a CLI guard that blocks dangerous commands, with every event reaching a syslog collector on the workstation.
1× CSR 1000v, 1× IOSv, 1× EVE-NG GUI server
3 vCPU, 5,632 MBFits LiteRuns in the free demo
-
16Testing network automation - unit tests mocks pre-post snapshots and a pipeline
Write the tests first: unit-test a small network library with saved device output and a mocked connection, then validate a real OSPF change with before-and-after snapshots, a structured diff and explicit checks, all chained into a pipeline that stops at the first failure.
3× IOSv, 1× EVE-NG GUI server
4 vCPU, 2,560 MBFits LiteRuns in the free demo
-
17Secure automation - secrets input validation and CA-signed TLS
Fix three classic automation security failures on real routers: a password leaked in code and Git history (rotate it and store secrets properly), a self-service script that lets anyone inject IOS commands (exploit it, then fix it with allow-list validation), and a REST client that skips certificate checks (build a lab CA and deploy a CA-signed certificate to IOS XE).
1× CSR 1000v, 1× IOSv, 1× EVE-NG GUI server
3 vCPU, 5,632 MBFits LiteRuns in the free demo
-
18Troubleshooting lab - NETCONF RESTCONF and YANG automation
Four model-driven scripts and an IOS XE router hide seven faults between them: RESTCONF authentication, an ACL that silently drops NETCONF, a mistyped module name, a reply parsed in the wrong format, a string where YANG wants a boolean, a filter namespace that returns nothing, and an augmented node without its namespace. Diagnose each from the evidence and fix it.
1× CSR 1000v, 1× EVE-NG GUI server
2 vCPU, 5,120 MBFits LiteRuns in the free demo
-
19Troubleshooting lab - Netmiko Jinja2 and Ansible automation that worked yesterday
A colleague's automation project fails in eight different ways across two routers and the workstation: wrong device types, a mistyped address, SSH disabled, a user without privilege, an undefined template variable, broken YAML, the wrong Ansible connection and a task that is never idempotent. Find each fault from its symptoms, fix it, and prove the whole project runs clean twice.
2× IOSv, 1× EVE-NG GUI server
3 vCPU, 2,048 MBFits LiteRuns in the free demo
-
20AI in network automation - an MCP tool server and reviewing AI-generated code
Build a read-only MCP server that gives an AI agent live interface, routing and configuration data from two routers, make it safe (allow-listed commands, secret redaction, untrusted device text), then catch the mistakes in an AI assistant's Netmiko script before they reach the network.
2× IOSv, 1× EVE-NG GUI server
3 vCPU, 2,048 MBFits LiteRuns in the free demo
-
21Capstone - deliver a network change through a pipeline from a source of truth
Deliver a real change the way an automation team does: lint and fix the source of truth, guard it with a Git hook, render the CLI with Jinja2, deploy IOS with Ansible and IOS XE with RESTCONF, configure telemetry and an EEM alert, validate in parallel with Netmiko and ntc-templates, run it all as one idempotent pipeline, prove the alerting with a drill, and release the change with a merge commit and a tag.
2× IOSv, 1× CSR 1000v, 1× EVE-NG GUI server
4 vCPU, 6,144 MBFits LiteRuns in the free demo
-
22NAPALM - one Python API for IOS EOS and Junos
Run the same Python against Cisco IOS, Arista EOS and Juniper Junos with NAPALM: normalised facts, addresses, LLDP links and BGP health, a compliance report from YAML, and one load, diff, commit and rollback workflow on all three.
1× IOSv, 1× vEOS, 1× vSRX NextGen template, 1× EVE-NG GUI server
5 vCPU, 7,680 MBFits LiteRuns in the free demo
-
23Junos automation - XML API NETCONF PyEZ and the REST API
Work up the Junos automation stack on a real vSRX: see the XML behind the CLI, speak NETCONF by hand and with ncclient, use PyEZ for facts, RPCs, tables and safe configuration changes with Jinja2 templates and confirmed commits, then drive the same RPCs through the REST API with cURL.
1× IOSv, 1× vSRX NextGen template, 1× EVE-NG GUI server
4 vCPU, 5,632 MBFits LiteRuns in the free demo
-
24Arista EOS automation - eAPI pyeapi and configuration sessions
Program two Arista switches from a Linux workstation: JSON-RPC calls to eAPI with cURL and Python, structured data with no screen scraping, pyeapi's connection profiles and API modules, a desired-state VLAN push, and configuration sessions with a commit timer that undoes a change nobody confirms.
2× vEOS, 1× EVE-NG GUI server
3 vCPU, 5,120 MBFits LiteRuns in the free demo
-
25HPE Aruba AOS-CX REST API v10-14 with cURL and Python
Manage two AOS-CX switches through their REST API: session cookies and limits, attributes, depth and selectors, what POST, PATCH, PUT and DELETE really do, a desired-state VLAN and port script, and checkpoints with rollback, all with cURL and plain Python requests.
2× AOS-CX virtual switch, 1× EVE-NG GUI server
5 vCPU, 7,168 MBFits LiteRuns in the free demo
-
26MikroTik RouterOS REST API - HTTPS CRUD and desired state
Automate two RouterOS routers through their REST API: move it from plain HTTP to verified HTTPS, learn how GET, PUT, PATCH, DELETE and POST map to RouterOS commands, build a routed link and OSPF from a YAML file with a script you can run twice, and give an API account only the rights it needs.
2× RouterOS, 1× EVE-NG GUI server
3 vCPU, 1,536 MBFits LiteRuns in the free demo
-
27Ansible across four vendors - IOS EOS Junos and RouterOS
One Ansible project for Cisco, Arista, Juniper and MikroTik: a connection plugin per platform, one source of truth, one report, and a baseline playbook that dispatches to each vendor's modules, stays idempotent, shows check mode and diff, and finds drift. Includes what to do when a module's Python library isn't there.
1× IOSv, 1× RouterOS, 1× vEOS, 1× vSRX NextGen template, 1× EVE-NG GUI server
6 vCPU, 7,936 MBFits LiteRuns in the free demo
Devices and images
The exact Add Node images the labs use, and the vCPU and RAM their nodes are set to. Your plan counts what each running node is set to.
| Device | Image in Add Node | Set to | Labs | Nodes |
|---|---|---|---|---|
| Cisco IOSv | vios-adventerprisek9-m.spa.159-3.m9 | 1 vCPU, 512 MB | 18 | 31 |
| EVE-NG GUI server (Docker) | eve-gui-server:latest | 1 vCPU, 1,024 MB | 27 | 27 |
| Cisco CSR 1000v | csr1000vng-universalk9.17.03.08a-serial | 1 vCPU, 4,096 MB | 14 | 14 |
| Arista vEOS | veos-4.33.1.1F | 1 vCPU, 2,048 MB | 3 | 4 |
| Juniper vSRX NextGen template | vsrxng-24.4R1.9 | 2 vCPU, 4,096 MB | 3 | 3 |
| MikroTik RouterOS | mikrotik-7.14.2 | 1 vCPU, 256 MB | 2 | 3 |
| Aruba AOS-CX virtual switch | arubacx-10.14 | 2 vCPU, 3,072 MB | 1 | 2 |
How to open the labs
Sign in to your workspace at
lab.cloudlabbox.com.In File Manager, open Shared, then the folder
Network Automation - CCNA and CCNP Automation guided labs.Open a lab and start its nodes, then open Lab Tasks for the steps.
The labs are read-only. You can start the nodes and configure the devices, but changes to the topology can’t be saved. To change a lab, rebuild it in your own folder.


Questions about the Network automation labs
Are these Network automation labs free?
They’re included with every lab plan, with nothing extra to pay, rather than free. Plans start at £3 a day or £0.50 an hour. To try one first, the free demo gives you 30 minutes with 6 vCPU and 8 GB, enough to run every one of these labs.
Which plan do I need for these labs?
Lite, with 6 vCPU and 8 GB, runs every lab here. EVE-NG admits a node by the vCPU and RAM configured on it, so a lab needs the total its running nodes are set to. The biggest here, “Ansible across four vendors - IOS EOS Junos and RouterOS”, needs 6 vCPU and 7,936 MB. Each lab’s Lab Tasks pane names the plan it needs.
Can I change these labs?
You can start the nodes and configure the devices, but the labs are read-only: changes to the topology can’t be saved. To change one, rebuild it in your own folder.
Are these labs from Cisco?
No. CloudLabBox wrote them to follow the topics of Cisco’s CCNA Automation exam (200-901, formerly DevNet Associate) and the device-level topics of the CCNP Automation exams, ENAUTO 300-435 and AUTOCOR 350-901. They aren’t training material from Cisco, and CloudLabBox is independent of Cisco.
Is CCNA Automation the old DevNet Associate?
Yes. Cisco’s CCNA Automation exam, 200-901, was called DevNet Associate before. These labs cover its hands-on topics and the device-level topics of ENAUTO and AUTOCOR.
Is it only Cisco?
No. Labs 22 to 27 also use Junos, Arista EOS, AOS-CX and RouterOS, and lab 23 follows the topics of Juniper’s JNCIA-DevOps JN0-224. JSNAPy isn’t installed, so that lab teaches the same idea with a small PyEZ script.
Try a lab before you choose
The free demo is a real workspace for 30 minutes, with 6 vCPU and 8 GB: enough to run every one of these labs. No card and no email.
More practice labs
- CCNA practice labs online
- CompTIA Network+ practice labs
- CCNP ENCOR practice labs
- CCNP ENARSI practice labs
- CCNP Service Provider practice labs
- Cisco NX-OS data centre practice labs
- CCIE Enterprise Infrastructure practice labs
- Cisco ASA firewall practice labs
- Packet analysis labs with Wireshark and tcpdump
- FortiGate practice labs
- FortiGate SD-WAN practice labs
- Cisco Catalyst SD-WAN CLI practice labs
- Palo Alto firewall practice labs
- Check Point CCSA practice labs
- Check Point CCSE practice labs
- Multi-vendor firewall and VPN practice labs
- BGP practice labs across vendors
- Nokia SR OS NRS I practice labs
- MPLS and L3VPN practice labs
- VXLAN EVPN practice labs across vendors
- IPv6 practice labs across vendors
- Linux labs for network engineers
- Multi-vendor troubleshooting practice labs
- JNCIA-Junos practice labs
- JNCIS-ENT practice labs
- JNCIA-SEC and JNCIS-SEC practice labs
- JNCIS-SP JN0-364 practice labs
- JNCIP-ENT JN0-650 practice labs
- Arista EOS practice labs
- HPE Aruba Networking CX switching labs
- Huawei HCIA-Datacom practice labs
- HCIP-Datacom Core practice labs
- MikroTik MTCNA practice labs
- MikroTik MTCRE practice labs
- MikroTik MTCINE practice labs
- MikroTik MTCSE practice labs
- MikroTik MTCTCE practice labs
- MikroTik MTCIPv6E practice labs
- All practice labs
CloudLabBox is independent of Cisco. The labs follow exam topics and aren’t vendor training material; vendor names identify the exams and the images in the workspace.