Skip to content

Release 0.75#

2026-04-27 · Full Changelog

Start, stop, and restart selected nodes#

The day has finally come when you can start, stop, and restart selected nodes in a running lab without nuking the whole lab. 🎉🎉🎉

The start, stop, and restart commands can now target a subset of nodes in a running lab. Pass --node (repeatable or comma-separated) to start or stop only the listed containers. The same limitations as restart apply: veth-based dataplane links, single-container nodes, and a few other cases remain unsupported for partial lifecycle.

This feature touched a lot of containerlab internal and there might be some fallout. Please report any issues you encounter in the issue tracker or our discord.

Thanks @FloSch62 @steiler @kaelemc #3055

Topology template composition#

Templated topologies (.clab.gotmpl) are easier to build and share.

  • The --vars flag can be used more than once; files are merged with later files overwriting keys from earlier ones. Automatic discovery of variable files is extended: alongside template.clab_vars.y[a]ml[|json], the pattern template.clab_vars.*.y[a]ml[|json] is also picked up when the vars file is auto-resolved.
  • Place additional *.gotmpl files in a clab_templates directory next to the main template; they are loaded and invokable with Go's {{ template "name.gotmpl" . }} from the top-level file.
  • A companion change applies topology variable paths when a workflow resolves the lab without passing -t (so --vars still takes effect in those cases).

See Generated topologies.

Thanks @amtelekom #3169 #3171

Juniper cSRX#

The new juniper_csrx kind runs Juniper cSRX firewall containers in the lab, with a baked-in day-0 config (default root:clab123, SSH and NETCONF enabled), startup-config for your Junos config, optional license handling, and save writing the running config to juniper.conf.

Thanks @mtucker502 #3170

Export the rendered topology YAML#

deploy and generate accept --export-rendered <path> to write the fully expanded topology YAML (after template rendering and environment-variable substitution) to a file—before the rest of deployment. That gives you a reproducible, inspectable file for debugging templates or for checking into version control.

containerlab deploy -t lab.clab.gotmpl --vars lab.clab_vars.yml --export-rendered lab.rendered.clab.yml

Thanks @Aprazor #3145

Credentials in the topology file#

You can set credentials (username and password) at defaults, per kinds, groups, and per nodes, with a well-defined “most specific wins” rule. Ansible and Nornir inventory outputs use the resolved per-node values.

Thanks @antoinekh #3136

The VyOS Networks VyOS and Arista cEOS kinds now support link ipv4 and ipv6 the same way other kinds do, so addresses from the links section are applied to dataplane interfaces on those nodes.

Thanks @evilhamsterman #3158

Classic SR OS CLI (vr-sros) automation#

For nokia_sros VM nodes, the default automation uses the MD-CLI nokia_sros scrapligo platform. If your image runs in classic or mixed CLI mode, set the CLAB_SROS_CONFIG_MODE environment variable to classic or mixed so containerlab uses the matching nokia_sros_classic platform for partial config apply, save, and related operations.

Thanks @antoinekh #3129

VxLAN tools: delete by exact name#

clab tools vxlan delete now accepts --name for deleting one VxLAN interface by exact name; it is mutually exclusive with the existing --prefix option.

Thanks @Rucdev #3167

Miscellaneous#

  • Fixed the Arch (AUR) installation link in the install guide. Thanks @andywhitaker #3151
  • Clarified Juniper vMX startup-config form in the docs. Thanks @endn #3168
  • VxLAN link data: sync.Once initialization, safer handling when a link namespace is missing, correct vxlan type in YAML, and a fix for a panic when the DNS Search list was an empty slice. #3147 #3131
  • Runtimes: explicit errors when a container’s PID is 0 before GetNSPath, closing ExecNotWait connections, and a clearer path when NetworkInspect fails. #3144 #3148
  • Core: close netns and netlink handles in interface listing; fix a tool-container cleanup loop when exec fails; return errors for bad PEM in cert code paths; stricter PreDeploy certificate error propagation; safer env var splitting and CreateFile error checks; and closing files to avoid leaks. #3161 #3159 #3130 #3138 #3139 #3140 #3132
  • VyOS: save errors are reported with the real failure from the node. #3160
  • Merged work for full SR-OS in automated tests. #3142
  • The default fdio_vpp image is updated so VPP-related configuration is provided under /config as expected by the image. Thanks @pimvanpelt #3152
  • SR-SIM and related content point to the current official SR-OS YANG model browser URL. Thanks @schavezc #3154
  • SR Linux topology type may use ixr-x4 as an alias for ixr-x4-d (fixes a mismatch with documentation). Thanks @schavezc #3157