netsim-tools are bringing infrastructure-as-code concepts to networking labs. You'll describe your high-level network topology and routing design in a YAML file, and the tools in this repository will
- Create Vagrantfile configuration file for virtualbox or libvirt environment
- Create containerlab configuration file
- Create Ansible inventory and configuration file
- Create IPv4 and IPv6 addressing plan and OSPF, IS-IS and BGP routing design
- Configure IPv4, IPv6, LLDP, OSPF, IS-IS, BGP or SR-MPLS on your lab devices.
Instead of wasting time creating lab topology in a GUI and configuring boring details, you'll start with a lab preconfigured according to your specifications.
- Latest release: release_0.6.3 (read release notes)
- If you find bugs in the latest 0.6 release, please report them and use and earlier 0.6 release or release_0.5.
More details in release notes.
You might also want to read the documentation, and installation guidelines.
create-topology : Creates a full-blown network topology, Vagrantfile and Ansible inventory from a simple list of nodes and links. More details
initial-config.ansible : Using topology data generated by create-topology and default device configuration templates configures common device parameters, protocols that should have been enabled (LLDP, OSPF, IS-IS, BGP, SR-MPLS), enables interfaces, and configures IP addresses on interfaces. More details
config.ansible : Applies any Jinja2 configuration templates to network devices.
create-config.ansible : Ansible playbook that creates devices configuration snippets (including configuration module snippets) without deploying them on network devices.
collect-configs.ansible : Using Ansible fact gathering or other device-specific Ansible modules, collects device configurations and saves them in specified directory (default: config).
display-neighbors.ansible : Using Ansible fact gathering collect device neighbor data (usually LLDP neighbors) and displays them. Use YAML Ansible output callback for maximum readability.
connect.sh : Use SSH or docker exec to connect to a lab device using device names, management network IP addresses (ansible_host), SSH port, and username/passwords from Ansible inventory. Ideal when you use centralized Vagrant environments and want to connect to the devices while being in playbook development directory.
enable-lldp.sh : Given libvirt network name, change group_fwd_mask for the corresponding Linux bridge to enable LLDP passthrough across the Linux bridge.