catalyst-sdwan-lab


Namecatalyst-sdwan-lab JSON
Version 2.1.4 PyPI version JSON
download
home_pagehttps://github.com/cisco-open/sdwan-lab-deployment-tool
SummaryCatalyst SD-WAN Lab Deployment Tool - Automation Tool for managing Cisco Catalyst SD-WAN labs inside Cisco Modeling Labs
upload_time2025-09-10 19:47:53
maintainerNone
docs_urlNone
authorTomasz Zarski
requires_python<4.0.0,>=3.9.2
licenseBSD-3-Clause
keywords cisco catalyst sdwan lab
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Tests](https://github.com/cisco-open/sdwan-lab-deployment-tool/actions/workflows/test.yml/badge.svg)](https://github.com/cisco-open/sdwan-lab-deployment-tool/actions/workflows/test.yml)
![Python Support](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-informational "Python Support: 3.9, 3.10, 3.11, 3.12, 3.13")

# Catalyst SD-WAN Lab Deployment Tool for Cisco Modeling Labs

This tool automates [Cisco Catalyst SD-WAN](https://www.cisco.com/site/us/en/solutions/networking/sdwan/index.html) lab deployment inside [Cisco Modeling Labs (CML)](https://www.cisco.com/c/en/us/products/cloud-systems-management/modeling-labs/index.html).

The tool will help you automate your CML lab deployments with SD-WAN Manager, Controllers and Validators and up to 20 SD-WAN edges. You can build as pods as your CML platform can host. Please refer to the [Limitations and scale](#limitations-and-scale) for details.

## Getting Started

### Prerequisites

Catalyst SD-WAN Lab Deployment Tool requires Linux or macOS system.
To run is on Windows, please use [Linux on Windows with WSL](/README.md#appendix---wsl-installation) or set up Linux VM/container.

Catalyst SD-WAN Lab Deployment Tool requires Python 3.9.2 or newer. This can be verified by pasting the following to a terminal window:

    python3 -c "import sys; assert sys.version_info >= (3, 9, 2)" && echo "ALL GOOD"

If 'ALL GOOD' is printed it means Python requirements are met. If not, download and install the supported 3.x version at Python.org (https://www.python.org/downloads/).

All the Python prerequisites are automaticaly installed when you install the package. Please refer to the [Installing](#installing) section for details.

This tool requires CML 2.6 or higher.

Demo of the tool and guide on how to use it can be found on this [youtube video](https://www.youtube.com/watch?v=WxiZ5bxlDk8).

### Installing

The recommended way to install is via pip.

Create a directory to store the virtual environment and runtime files:

      mkdir csdwan
      cd csdwan

Create virtual environment:

      python3 -m venv venv

Activate virtual environment:

     source venv/bin/activate

- Note that the prompt is updated with the virtual environment name (venv), indicating that the virtual environment is active.

Upgrade initial virtual environment packages:

    pip install --upgrade pip setuptools

To install SD-WAN Lab Deployment Tool:

    pip install --upgrade catalyst-sdwan-lab

Verify that SD-WAN Lab tool can run:

    sdwan-lab --version

You can also use the following shortcut to run any lab task:

    csdwan --version

Notes:

- The virtual environment is deactivated by typing 'deactivate' at the command prompt.
- Before running Catalyst SD-WAN Lab Deployment Tool again, make sure to activate the virtual environment back again (source venv/bin/activate).

## Usage

Simmilar to [Sastre](https://github.com/CiscoDevNet/sastre), the command line is structured as a set of base parameters, the task specification followed by task-specific parameters:

      sdwan-lab <base parameters> <task> <task-specific parameters>

Base parameters define global options such as verbosity level, CML credentials, etc.

Task indicates the operation to be performed. The following tasks are currently available:

- [Setup](#setup-task): Setup CML to support Catalyst SD-WAN use cases, upload new software images, and create node and image definitions that are required to run Catalyst SD-WAN lab in the CML.
- [Deploy](#deploy-task): Deploy CML topology with two underlay networks (INET, MPLS), one Manager/Validator/Controller, and one Gateway router. Once topology boots up, configure the control components and create basic templates / configuration groups.
- [Add](#add-task): Add and automatically onboard additional SD-WAN nodes (Validators/Controllers/Edges) to existing lab.
- [Backup](#backup-task): Backup the Catalyst SD-WAN Lab runnning in CML, including the CML topology and all its nodes, SD-WAN device states and templates / configuration groups.
- [Restore](#restore-task): Restore the Catalyst SD-WAN Lab from backup, onboard and confgure control components and create basic feature templates / configuration groups. If there are any WAN Edges, automatically onboard the WAN Edges back to the SD-WAN Manager using the configuration from the backup.
- [Delete](#delete-task): Delete currently running lab from CML and remove all lab data.
- [Sign](#sign-task): Sign Certificate Signing Request (CSR) using SD-WAN Lab Deployment Tool Root CA

Task-specific parameters are provided after the task argument.

### Base Parameters

      sdwan-lab -h

       Usage: sdwan-lab [OPTIONS] COMMAND [ARGS]...

      ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --version                          Show the version and exit.                                                                                                                              │
      │ --verbose   -v  <verbosity level>  Verbose mode. Multiple -v options increase the verbosity.                                                                                               │
      │ --cml       -c  <cml-ip>           CML IP address, can also be defined via CML_IP environment variable.                                                                                    │
      │ --user      -u  <cml-user>         CML username, can also be defined via CML_USER environment variable.                                                                                    │
      │ --password  -p  <cml-password>     CML password, can also be defined via CML_PASSWORD environment variable.                                                                                │
      │ --help      -h                     Show this message and exit.                                                                                                                             │
      ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
      ╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ add                     Add Catalyst SD-WAN device to running lab pod.                                                                                                                     │
      │ backup                  Backup running Catalyst SD-WAN lab pod.                                                                                                                            │
      │ delete                  Delete the CML lab and all the lab data.                                                                                                                           │
      │ deploy                  Deploy a new Catalyst SD-WAN lab pod.                                                                                                                              │
      │ restore                 Restore Catalyst SD-WAN POD from backup.                                                                                                                           │
      │ setup                   Setup CML to use Catalyst SD-WAN Lab automation.                                                                                                           │
      │ sign                    Sign CSR using the SD-WAN Lab Deployment Tool Root CA.                                                                                                             │
      ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Most of the parameters can also be provided via environment variables:

- CML_IP
- CML_USER
- CML_PASSWORD
- MANAGER_IP
- MANAGER_USER
- MANAGER_PASSWORD
- MANAGER_MASK
- MANAGER_GATEWAY
- LAB_NAME

For any of the required arguments, user is prompted for a value if they are not provided via the environment variables or command line arguments.

The easiest way to run the tool is to provide all the lab variables in the rc file and source that file. The example file below contains all the variables required to run all the tasks.

    % cat rc-example.sh
    export CML_IP='10.0.0.1'
    export CML_USER='user1'
    export CML_PASSWORD='2ajG$I2?8k'
    export MANAGER_IP='10.0.0.10'
    export MANAGER_USER='sdwan'
    export MANAGER_PASSWORD='2ajG$I2?8k'
    export MANAGER_MASK='/24'
    export MANAGER_GATEWAY='10.0.0.254'
    export LAB_NAME='sdwan'
    % source rc-example.sh

Note that if password was not defined, the user will be prompted for a password. Also please note we recommend not to use admin user as MANAGER_USER. Instead, configure a different user name to always have a backup user. By default, the MANAGER_PASSWORD will be set for both admin user and the MANAGER_USER that you specify.

Note that MANAGER_IP can be:

- an IP address: SD-WAN Manager will be reachable over this IP address. By default the IP address should come from the same subnet as CML IP, unless custom bridge is specified during deploy task.
- a PATty port in format "pat:<outside-port>": SD-WAN Manager will be reachable over CML IP port <outside-port>. Before using this option, PATTy needs to be enabled on the CML server as per [CML documentation](https://developer.cisco.com/docs/modeling-labs/patty-tool-mapping-configuration/).

If you want to use PATty the rc file above will change slighty to the following.

    % cat rc-PATty-example.sh
    export CML_IP='10.0.0.1'
    export CML_USER='user1'
    export CML_PASSWORD='2ajG$I2?8k'
    export MANAGER_IP='pat:2002'
    export MANAGER_USER='sdwan'
    export MANAGER_PASSWORD='2ajG$I2?8k'
    export LAB_NAME='sdwan-PATty'
    % source rc-PATty-example.sh

### Task-specific Parameters

Task-specific parameters and options are defined after the task is provided. Each task has its own set of parameters. Check the task documentation to learn more about task-specific parameters.

### Setup Task

This task makes sure your CML is ready to run Catalyst SD-WAN labs. The task will:

- Create node definitions that are required to run Catalyst SD-WAN lab in the CML: Manager, Validator, Controller and Edge
- Look for new SD-WAN software images in the folder where the script was run. If the image is found, upload the image to CML and create image definition for the right node definition: Manager, Validator, Controller and Edge

On each CML server that you want to use, you should run a setup task at least once to create required node and image definitions. You can rerun the setup task each time you want to add a new Catalyst SD-WAN software image to your CML server.

This task can also delete existing image definitions to clean up old SD-WAN releases from CML server.

      sdwan-lab setup -h

       Usage: sdwan-lab setup [OPTIONS]

      ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --delete  -d  <software_versions>  Delete all image definitions for the specified software           │
      │                                    version(s). To specify multiple versions, separate them with a    │
      │                                    comma.                                                            │
      │ --list    -l                       List the available SD-WAN software per node type and exit.        │
      │ --help    -h                       Show this message and exit.                                       │
      ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯

### Deploy Task

This task:

1. Defines subnets:
   - VPN0 - 172.16.0.0/24 / fc00:172:16::/64
   - INET - 172.16.1.0/24 / fc00:172:16:1:/64
   - MPLS - 172.16.2.0/24 / fc00:172:16:2:/64
   - External Connector - in bridge mode, this subnet is defined by task-specific parameters and is used to provide external reachability to SD-WAN Manager.
   - Internet Connector - in NAT mode, this subnet provides Internet connectivity for Internet transport and is same as CML subnet
2. Deploys basic SD-WAN topology with:
   - two underlay networks (INET, MPLS)
   - one Manager
   - one Validator
   - one Controller
   - one Gateway router that connects VPN0 subnet to INET and MPLS subnets
3. Once topology boots up, the task configures the control plane (control components, certificates, etc.) and create basic feature templates / configuration groups that can be used for WAN Edge onboarding. It also attaches Controller to device template.
4. At this point you can start creating your custom topology using [Add Task](#add-task) to automatically onboard additional SD-WAN nodes (Validators/Controllers/Edges).

You should run this task to deploy a new lab with control plane configured and build any WAN Edge topology you like.

This task has several task-specific parameters, including software version that you want to run on the control components. The ip_type option allows you to select if overlay will be deployed as IPv4-only (v4 - default), IPv6-only (v6) or dual stack (dual).

      (venv) tzarski:~$sdwan-lab deploy -h

       Usage: sdwan-lab deploy [OPTIONS] <software-version>

     positional arguments:
       <software-version>    Software version that will be used on
     SD-WAN Control Components.

      ╭─ Options ─────────────────────────────────────────────────────╮
      │ --manager        <manager-ip>          SD-WAN Manager IP      │
      │                                        address, can also be   │
      │                                        defined via MANAGER_IP │
      │                                        environment            │
      │ --muser          <manager-user>        SD-WAN Manager         │
      │                                        username, can also be  │
      │                                        defined via            │
      │                                        MANAGER_USER           │
      │                                        environment variable.  │
      │ --mpassword      <manager-password>    SD-WAN Manager         │
      │                                        password, can also be  │
      │                                        defined via            │
      │                                        MANAGER_PASSWORD       │
      │                                        environment variable.  │
      │ --mmask          <manager-mask>        Subnet mask for given  │
      │                                        SD-WAN Manager IP      │
      │                                        (e.g. /24), can also   │
      │                                        be defined via         │
      │                                        MANAGER_MASK           │
      │                                        environment variable.  │
      │ --mgateway       <manager-gateway>     Gateway IP for given   │
      │                                        SD-WAN Manager IP, can │
      │                                        also be defined via    │
      │                                        MANAGER_GATEWAY        │
      │                                        environment variable.  │
      │ --lab            <lab_name>            Set CML Lab name, can  │
      │                                        also be defined via    │
      │                                        LAB_NAME environment   │
      │                                        variable. If not       │
      │                                        provided, default name │
      │                                        "sdwan<number>" will   │
      │                                        be assigned.           │
      │ --bridge         <custom-bridge-name>  Set custom bridge for  │
      │                                        SD-WAN Manager         │
      │                                        external connection.   │
      │                                        Default is System      │
      │                                        Bridge                 │
      │ --dns            <dns-server-ip>       Set custom DNS server  │
      │                                        for Internet/VPN0      │
      │                                        transport. Default is  │
      │                                        same as CML DNS        │
      │ --retry                                If for some reason     │
      │                                        your script lost       │
      │                                        connectivity during    │
      │                                        SD-WAN Manager boot,   │
      │                                        you can add --retry to │
      │                                        continue onboarding    │
      │                                        the lab that is        │
      │                                        already in CML         │
      │ --ip_type        <ip_type>             IP type to use for     │
      │                                        deployment: v4, v6, or │
      │                                        dual. Default is v4.   │
      │                                        [default: v4]          │
      │ --help       -h                        Show this message and  │
      │                                        exit.                  │
      ╰───────────────────────────────────────────────────────────────╯

Time to complete the deployment task depends on:

- SD-WAN software version
- CML resources

### Add Task

This task adds Catalyst SD-WAN nodes (Validators/Controllers/Edges) into existing Catalyst SD-WAN lab. It will automatically recognize the IP type (v4/v6/dual) and onboard the devices using same IP type as discovered. This task will:

1. Add requested number of nodes to the CML topology and boot them with cloud-init configuration
2. Once nodes boot up, automatically onboard them to SD-WAN Manager
3. For Controller/Edge nodes, automatically attach basic device template / configuration group
4. For Validator nodes, automatically update Validator FQDN mapping with new IP addresses

This task has several task-specific parameters.

      sdwan-lab add -h

       Usage: sdwan-lab add [OPTIONS] <number-of-devices> <device-type> <software-version>

      positional arguments:
      <number-of-devices>   Number of devices to be added.
      <device-type>         Type of device/s to be added (e.g. validator, controller, edge, sdrouting).
      <software-version>    Software version that will be used.

      ╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --manager        <manager-ip>        SD-WAN Manager IP address, can also be defined via MANAGER_IP environment                                       │
      │ --muser          <manager-user>      SD-WAN Manager username, can also be defined via MANAGER_USER environment variable.                             │
      │ --mpassword      <manager-password>  SD-WAN Manager password, can also be defined via MANAGER_PASSWORD environment variable.                         │
      │ --lab            <lab_name>          CML Lab name, can also be defined via LAB_NAME environment variable.                                            │
      │ --cpus           <cpus>              Set custom number of CPUs for the device.                                                                       │
      │ --ram            <ram>               Set custom RAM size for the device in MB.                                                                       │
      │ --help       -h                      Show this message and exit.                                                                                     │
      ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Below you will find few examples of add task:

    sdwan-lab add 1 validator 20.9.4 --lab sdwan1
    sdwan-lab add 2 controllers 20.12.2 --lab sdwan2
    sdwan-lab add 5 edges 17.09.03a --lab vsdwan1
    sdwan-lab add 1 edge 17.12.04 --cpu 8 --ram 8192
    sdwan-lab add 2 sdrouting 17.12.2 --lab vsdwan1

### Backup Task

This task creates a backup of the Catalyst SD-WAN lab running in CML. CML doesn't natively support configuration export from Catalyst SD-WAN nodes, but this script can help you to save your Catalyst SD-WAN configuration. This task will:

1. For Manager, Validator, Controller and WAN Edge nodes (SD-WAN and SD-Routing), create configuration backup.
2. For non-SD-WAN nodes, export the configuration if it's supported by CML.
3. Save the CML topology with exported configuration.
4. Create a backup of SD-WAN Manager templates, policies and configuration groups using [Sastre](https://github.com/CiscoDevNet/sastre).

This task has several task-specific parameters, including working directory where backup is saved.

      sdwan-lab backup -h

       Usage: sdwan-lab backup [OPTIONS]

      ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --manager        <manager-ip>        SD-WAN Manager IP address, can also be defined via MANAGER_IP environment                                                                             │
      │ --muser          <manager-user>      SD-WAN Manager username, can also be defined via MANAGER_USER environment variable.                                                                   │
      │ --mpassword      <manager-password>  SD-WAN Manager password, can also be defined via MANAGER_PASSWORD environment variable.                                                               │
      │ --lab            <lab_name>          CML Lab name, can also be defined via LAB_NAME environment variable.                                                                                  │
      │ --workdir        <directory>         Backup destination folder                                                                                                                             │
      │ --help       -h                      Show this message and exit.                                                                                                                           │
      ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

### Restore Task

This task restores Catalyst SD-WAN lab from a backup. This task will:

1. Import the CML topology from the backup and boot the Catalyst SD-WAN control components first.
2. Once control components are up, configure the control plane (control components, certificates, etc.).
3. Restore SD-WAN Manager templates, policies and configuration groups using [Sastre](https://github.com/CiscoDevNet/sastre).
4. Verify if there are any WAN Edges in the topology (SD-WAN and SD-Routing). If yes, then generate the new OTP and automatically reonboard them to SD-WAN Manager.

This task has several task-specific parameters, including working directory from where backup is restored. You can also overwrite the software version for control components and SD-WAN/SD-Routing Edges (note that specifying version lower than the one in the backup is not supported).

      sdwan-lab restore -h

       Usage: sdwan-lab restore [OPTIONS]

      ╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────╮
      │ --manager             <manager-ip>        SD-WAN Manager IP address, can also be defined via      │
      │                                           MANAGER_IP environment                                  │
      │ --muser               <manager-user>      SD-WAN Manager username, can also be defined via        │
      │                                           MANAGER_USER environment variable.                      │
      │ --mpassword           <manager-password>  SD-WAN Manager password, can also be defined via        │
      │                                           MANAGER_PASSWORD environment variable.                  │
      │ --mmask               <manager-mask>      Subnet mask for given SD-WAN Manager IP (e.g. /24), can │
      │                                           also be defined via MANAGER_MASK environment variable.  │
      │ --mgateway            <manager-gateway>   Gateway IP for given SD-WAN Manager IP, can also be     │
      │                                           defined via MANAGER_GATEWAY environment variable.       │
      │ --lab                 <lab_name>          CML Lab name, can also be defined via LAB_NAME          │
      │                                           environment variable.                                   │
      │ --workdir             <directory>         Restore source folder                                   │
      │ --deleteexisting                          If there is already lab running with same name and      │
      │                                           using same SD-WAN Manager IP, delete this lab before    │
      │                                           restoring. Note the all running lab data will be lost!  │
      │ --retry                                   If for some reason your script lost connectivity during │
      │                                           SD-WAN Manager boot, you can add --retry to continue    │
      │                                           onboarding the lab that is already in CML               │
      │ --contr_version       <contr_version>     Change the controller version when restoring the lab.   │
      │ --edge_version        <edge_version>      Change the SD-WAN edge version when restoring the lab.  │
      │ --help            -h                      Show this message and exit.                             │
      ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯

Below you will find few examples of restore task:

    sdwan-lab restore --workdir backup
    sdwan-lab restore --workdir backup --deleteexisting
    sdwan-lab restore --workdir backup --contr_version 20.16.1
    sdwan-lab restore --workdir backup --contr_version 20.16.1 --edge_version 17.16.01a

### Delete Task

This task deletes the CML lab and removes all it's data. Note after this operation, all lab data is lost.

This task has several task-specific parameters.

      (venv) tzarski:~$sdwan-lab delete -h

       Usage: sdwan-lab delete [OPTIONS]

      ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --lab        <lab_name>  CML Lab name, can also be defined via LAB_NAME environment variable.                                                                                              │
      │ --force                  Delete the lab without asking for confirmation. Note the all lab data will be lost!                                                                               │
      │ --help   -h              Show this message and exit.                                                                                                                                       │
      ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

### Sign Task

This tasks reads the Certificate Signing Request (CSR) from a file and signs it using SD-WAN Lab Deployment Tool Root CA.
At the end, the task prints the signed certificate in standard output.

This task has several task-specific parameters.

      sdwan-lab sign -h

       Usage: sdwan-lab sign [OPTIONS] <csr_file>


       positional arguments:
         <csr_file>  Certificate Signing Request (CSR) File

      ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
      │ --help  -h    Show this message and exit.                                                                                                                                                  │
      ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

## Limitations and scale

The tool supports the following scale per CML lab:

- 1 SD-wan Manager instance (Cluster is not yet supported)
- 8 SD-WAN Validators (Documented support from CCO)
- 12 SD-WAN Controllers (Documented support from CCO)
- 20 SD-WAN Edges
- 10 SD-Routing Edges

The tool requires a minimum of 9 nodes to deploy the topology; therefore, it is not supported on CML-Free.

## Appendix - Offline/Air-gapped Installation

If you need to install the `catalyst-sdwan-lab` package in an air-gapped environment (without internet access), follow these steps:

On a machine with internet access, download the package and all its dependencies.

   ```
   mkdir catalyst_sdwan_lab_packages
   cd catalyst_sdwan_lab_packages
   pip download catalyst-sdwan-lab
   ```
   This will create a local directory containing the package `.whl` or `.tar.gz` files along with all its dependencies.

Transfer the folder to the Air-Gapped Environment.

On the air-gapped machine, create a directory to store the virtual environment and runtime files:

    mkdir csdwan
    cd csdwan

Create virtual environment:

    python3 -m venv venv

Activate virtual environment:

    source venv/bin/activate

Install the package and its dependencies from the transferred files:

    pip install --no-index --find-links=/path/to/catalyst_sdwan_lab_packages catalyst-sdwan-lab

Replace `/path/to/catalyst_sdwan_lab_packages` with the path where the downloaded files were copied.

Verify that SD-WAN Lab tool can run:

    sdwan-lab --version

You can also use the following shortcut to run any lab task:

    csdwan --version

## Appendix - WSL Installation

To install WSL on your Windows VM or Physical machine. Ensure that the HW Virutalization is enabled in the BIOS or VM Defintion.

If its on Windows server you may need to run this command to allow the WSL to function properly

Open PowerShell as Administrator and run:

`Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux`

Install WSL with default distribution (Ubuntu)
Open PowerShell and run

`wsl --install`

Once the installation is finished and you have restarted Windows you are able to continue the installation of this tool as described in the [installation section](README.md#installing) of this document.

You can read more about [Linux on Windows with WSL here](https://learn.microsoft.com/en-us/windows/wsl/install).

## FAQ

Q1: My devices' consoles have stopped working after I created my own configuration groups. How do I recover console access?

A1: Always include the `platform console serial` command in an CLI add-on feature parcel to ensure your consoles work from the CML UI. Note that after adding this command, a WAN Edge reboot is required.

Q2: Can I SSH to my Manager instance directly?

A2: Yes, you can if you are using an external IP. However, if you are using PATty, you cannot, as we only map the HTTPS port.

## Authors

Tomasz Zarski (tzarski@cisco.com)

## License

BSD-3-Clause

## Acknowledgments

- Marcelo Reis and [Sastre](https://github.com/CiscoDevNet/sastre)
- Inigo Alonso


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cisco-open/sdwan-lab-deployment-tool",
    "name": "catalyst-sdwan-lab",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0.0,>=3.9.2",
    "maintainer_email": null,
    "keywords": "cisco, catalyst, sdwan, lab",
    "author": "Tomasz Zarski",
    "author_email": "tzarski@cisco.com",
    "download_url": "https://files.pythonhosted.org/packages/1e/42/ed39a7db8c5c4d2c3f57bdee57a4848e3eb85d9d468342cdd252396e6f51/catalyst_sdwan_lab-2.1.4.tar.gz",
    "platform": null,
    "description": "[![Tests](https://github.com/cisco-open/sdwan-lab-deployment-tool/actions/workflows/test.yml/badge.svg)](https://github.com/cisco-open/sdwan-lab-deployment-tool/actions/workflows/test.yml)\n![Python Support](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-informational \"Python Support: 3.9, 3.10, 3.11, 3.12, 3.13\")\n\n# Catalyst SD-WAN Lab Deployment Tool for Cisco Modeling Labs\n\nThis tool automates [Cisco Catalyst SD-WAN](https://www.cisco.com/site/us/en/solutions/networking/sdwan/index.html) lab deployment inside [Cisco Modeling Labs (CML)](https://www.cisco.com/c/en/us/products/cloud-systems-management/modeling-labs/index.html).\n\nThe tool will help you automate your CML lab deployments with SD-WAN Manager, Controllers and Validators and up to 20 SD-WAN edges. You can build as pods as your CML platform can host. Please refer to the [Limitations and scale](#limitations-and-scale) for details.\n\n## Getting Started\n\n### Prerequisites\n\nCatalyst SD-WAN Lab Deployment Tool requires Linux or macOS system.\nTo run is on Windows, please use [Linux on Windows with WSL](/README.md#appendix---wsl-installation) or set up Linux VM/container.\n\nCatalyst SD-WAN Lab Deployment Tool requires Python 3.9.2 or newer. This can be verified by pasting the following to a terminal window:\n\n    python3 -c \"import sys; assert sys.version_info >= (3, 9, 2)\" && echo \"ALL GOOD\"\n\nIf 'ALL GOOD' is printed it means Python requirements are met. If not, download and install the supported 3.x version at Python.org (https://www.python.org/downloads/).\n\nAll the Python prerequisites are automaticaly installed when you install the package. Please refer to the [Installing](#installing) section for details.\n\nThis tool requires CML 2.6 or higher.\n\nDemo of the tool and guide on how to use it can be found on this [youtube video](https://www.youtube.com/watch?v=WxiZ5bxlDk8).\n\n### Installing\n\nThe recommended way to install is via pip.\n\nCreate a directory to store the virtual environment and runtime files:\n\n      mkdir csdwan\n      cd csdwan\n\nCreate virtual environment:\n\n      python3 -m venv venv\n\nActivate virtual environment:\n\n     source venv/bin/activate\n\n- Note that the prompt is updated with the virtual environment name (venv), indicating that the virtual environment is active.\n\nUpgrade initial virtual environment packages:\n\n    pip install --upgrade pip setuptools\n\nTo install SD-WAN Lab Deployment Tool:\n\n    pip install --upgrade catalyst-sdwan-lab\n\nVerify that SD-WAN Lab tool can run:\n\n    sdwan-lab --version\n\nYou can also use the following shortcut to run any lab task:\n\n    csdwan --version\n\nNotes:\n\n- The virtual environment is deactivated by typing 'deactivate' at the command prompt.\n- Before running Catalyst SD-WAN Lab Deployment Tool again, make sure to activate the virtual environment back again (source venv/bin/activate).\n\n## Usage\n\nSimmilar to [Sastre](https://github.com/CiscoDevNet/sastre), the command line is structured as a set of base parameters, the task specification followed by task-specific parameters:\n\n      sdwan-lab <base parameters> <task> <task-specific parameters>\n\nBase parameters define global options such as verbosity level, CML credentials, etc.\n\nTask indicates the operation to be performed. The following tasks are currently available:\n\n- [Setup](#setup-task): Setup CML to support Catalyst SD-WAN use cases, upload new software images, and create node and image definitions that are required to run Catalyst SD-WAN lab in the CML.\n- [Deploy](#deploy-task): Deploy CML topology with two underlay networks (INET, MPLS), one Manager/Validator/Controller, and one Gateway router. Once topology boots up, configure the control components and create basic templates / configuration groups.\n- [Add](#add-task): Add and automatically onboard additional SD-WAN nodes (Validators/Controllers/Edges) to existing lab.\n- [Backup](#backup-task): Backup the Catalyst SD-WAN Lab runnning in CML, including the CML topology and all its nodes, SD-WAN device states and templates / configuration groups.\n- [Restore](#restore-task): Restore the Catalyst SD-WAN Lab from backup, onboard and confgure control components and create basic feature templates / configuration groups. If there are any WAN Edges, automatically onboard the WAN Edges back to the SD-WAN Manager using the configuration from the backup.\n- [Delete](#delete-task): Delete currently running lab from CML and remove all lab data.\n- [Sign](#sign-task): Sign Certificate Signing Request (CSR) using SD-WAN Lab Deployment Tool Root CA\n\nTask-specific parameters are provided after the task argument.\n\n### Base Parameters\n\n      sdwan-lab -h\n\n       Usage: sdwan-lab [OPTIONS] COMMAND [ARGS]...\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --version                          Show the version and exit.                                                                                                                              \u2502\n      \u2502 --verbose   -v  <verbosity level>  Verbose mode. Multiple -v options increase the verbosity.                                                                                               \u2502\n      \u2502 --cml       -c  <cml-ip>           CML IP address, can also be defined via CML_IP environment variable.                                                                                    \u2502\n      \u2502 --user      -u  <cml-user>         CML username, can also be defined via CML_USER environment variable.                                                                                    \u2502\n      \u2502 --password  -p  <cml-password>     CML password, can also be defined via CML_PASSWORD environment variable.                                                                                \u2502\n      \u2502 --help      -h                     Show this message and exit.                                                                                                                             \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n      \u256d\u2500 Commands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 add                     Add Catalyst SD-WAN device to running lab pod.                                                                                                                     \u2502\n      \u2502 backup                  Backup running Catalyst SD-WAN lab pod.                                                                                                                            \u2502\n      \u2502 delete                  Delete the CML lab and all the lab data.                                                                                                                           \u2502\n      \u2502 deploy                  Deploy a new Catalyst SD-WAN lab pod.                                                                                                                              \u2502\n      \u2502 restore                 Restore Catalyst SD-WAN POD from backup.                                                                                                                           \u2502\n      \u2502 setup                   Setup CML to use Catalyst SD-WAN Lab automation.                                                                                                           \u2502\n      \u2502 sign                    Sign CSR using the SD-WAN Lab Deployment Tool Root CA.                                                                                                             \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\nMost of the parameters can also be provided via environment variables:\n\n- CML_IP\n- CML_USER\n- CML_PASSWORD\n- MANAGER_IP\n- MANAGER_USER\n- MANAGER_PASSWORD\n- MANAGER_MASK\n- MANAGER_GATEWAY\n- LAB_NAME\n\nFor any of the required arguments, user is prompted for a value if they are not provided via the environment variables or command line arguments.\n\nThe easiest way to run the tool is to provide all the lab variables in the rc file and source that file. The example file below contains all the variables required to run all the tasks.\n\n    % cat rc-example.sh\n    export CML_IP='10.0.0.1'\n    export CML_USER='user1'\n    export CML_PASSWORD='2ajG$I2?8k'\n    export MANAGER_IP='10.0.0.10'\n    export MANAGER_USER='sdwan'\n    export MANAGER_PASSWORD='2ajG$I2?8k'\n    export MANAGER_MASK='/24'\n    export MANAGER_GATEWAY='10.0.0.254'\n    export LAB_NAME='sdwan'\n    % source rc-example.sh\n\nNote that if password was not defined, the user will be prompted for a password. Also please note we recommend not to use admin user as MANAGER_USER. Instead, configure a different user name to always have a backup user. By default, the MANAGER_PASSWORD will be set for both admin user and the MANAGER_USER that you specify.\n\nNote that MANAGER_IP can be:\n\n- an IP address: SD-WAN Manager will be reachable over this IP address. By default the IP address should come from the same subnet as CML IP, unless custom bridge is specified during deploy task.\n- a PATty port in format \"pat:<outside-port>\": SD-WAN Manager will be reachable over CML IP port <outside-port>. Before using this option, PATTy needs to be enabled on the CML server as per [CML documentation](https://developer.cisco.com/docs/modeling-labs/patty-tool-mapping-configuration/).\n\nIf you want to use PATty the rc file above will change slighty to the following.\n\n    % cat rc-PATty-example.sh\n    export CML_IP='10.0.0.1'\n    export CML_USER='user1'\n    export CML_PASSWORD='2ajG$I2?8k'\n    export MANAGER_IP='pat:2002'\n    export MANAGER_USER='sdwan'\n    export MANAGER_PASSWORD='2ajG$I2?8k'\n    export LAB_NAME='sdwan-PATty'\n    % source rc-PATty-example.sh\n\n### Task-specific Parameters\n\nTask-specific parameters and options are defined after the task is provided. Each task has its own set of parameters. Check the task documentation to learn more about task-specific parameters.\n\n### Setup Task\n\nThis task makes sure your CML is ready to run Catalyst SD-WAN labs. The task will:\n\n- Create node definitions that are required to run Catalyst SD-WAN lab in the CML: Manager, Validator, Controller and Edge\n- Look for new SD-WAN software images in the folder where the script was run. If the image is found, upload the image to CML and create image definition for the right node definition: Manager, Validator, Controller and Edge\n\nOn each CML server that you want to use, you should run a setup task at least once to create required node and image definitions. You can rerun the setup task each time you want to add a new Catalyst SD-WAN software image to your CML server.\n\nThis task can also delete existing image definitions to clean up old SD-WAN releases from CML server.\n\n      sdwan-lab setup -h\n\n       Usage: sdwan-lab setup [OPTIONS]\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --delete  -d  <software_versions>  Delete all image definitions for the specified software           \u2502\n      \u2502                                    version(s). To specify multiple versions, separate them with a    \u2502\n      \u2502                                    comma.                                                            \u2502\n      \u2502 --list    -l                       List the available SD-WAN software per node type and exit.        \u2502\n      \u2502 --help    -h                       Show this message and exit.                                       \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n### Deploy Task\n\nThis task:\n\n1. Defines subnets:\n   - VPN0 - 172.16.0.0/24 / fc00:172:16::/64\n   - INET - 172.16.1.0/24 / fc00:172:16:1:/64\n   - MPLS - 172.16.2.0/24 / fc00:172:16:2:/64\n   - External Connector - in bridge mode, this subnet is defined by task-specific parameters and is used to provide external reachability to SD-WAN Manager.\n   - Internet Connector - in NAT mode, this subnet provides Internet connectivity for Internet transport and is same as CML subnet\n2. Deploys basic SD-WAN topology with:\n   - two underlay networks (INET, MPLS)\n   - one Manager\n   - one Validator\n   - one Controller\n   - one Gateway router that connects VPN0 subnet to INET and MPLS subnets\n3. Once topology boots up, the task configures the control plane (control components, certificates, etc.) and create basic feature templates / configuration groups that can be used for WAN Edge onboarding. It also attaches Controller to device template.\n4. At this point you can start creating your custom topology using [Add Task](#add-task) to automatically onboard additional SD-WAN nodes (Validators/Controllers/Edges).\n\nYou should run this task to deploy a new lab with control plane configured and build any WAN Edge topology you like.\n\nThis task has several task-specific parameters, including software version that you want to run on the control components. The ip_type option allows you to select if overlay will be deployed as IPv4-only (v4 - default), IPv6-only (v6) or dual stack (dual).\n\n      (venv) tzarski:~$sdwan-lab deploy -h\n\n       Usage: sdwan-lab deploy [OPTIONS] <software-version>\n\n     positional arguments:\n       <software-version>    Software version that will be used on\n     SD-WAN Control Components.\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --manager        <manager-ip>          SD-WAN Manager IP      \u2502\n      \u2502                                        address, can also be   \u2502\n      \u2502                                        defined via MANAGER_IP \u2502\n      \u2502                                        environment            \u2502\n      \u2502 --muser          <manager-user>        SD-WAN Manager         \u2502\n      \u2502                                        username, can also be  \u2502\n      \u2502                                        defined via            \u2502\n      \u2502                                        MANAGER_USER           \u2502\n      \u2502                                        environment variable.  \u2502\n      \u2502 --mpassword      <manager-password>    SD-WAN Manager         \u2502\n      \u2502                                        password, can also be  \u2502\n      \u2502                                        defined via            \u2502\n      \u2502                                        MANAGER_PASSWORD       \u2502\n      \u2502                                        environment variable.  \u2502\n      \u2502 --mmask          <manager-mask>        Subnet mask for given  \u2502\n      \u2502                                        SD-WAN Manager IP      \u2502\n      \u2502                                        (e.g. /24), can also   \u2502\n      \u2502                                        be defined via         \u2502\n      \u2502                                        MANAGER_MASK           \u2502\n      \u2502                                        environment variable.  \u2502\n      \u2502 --mgateway       <manager-gateway>     Gateway IP for given   \u2502\n      \u2502                                        SD-WAN Manager IP, can \u2502\n      \u2502                                        also be defined via    \u2502\n      \u2502                                        MANAGER_GATEWAY        \u2502\n      \u2502                                        environment variable.  \u2502\n      \u2502 --lab            <lab_name>            Set CML Lab name, can  \u2502\n      \u2502                                        also be defined via    \u2502\n      \u2502                                        LAB_NAME environment   \u2502\n      \u2502                                        variable. If not       \u2502\n      \u2502                                        provided, default name \u2502\n      \u2502                                        \"sdwan<number>\" will   \u2502\n      \u2502                                        be assigned.           \u2502\n      \u2502 --bridge         <custom-bridge-name>  Set custom bridge for  \u2502\n      \u2502                                        SD-WAN Manager         \u2502\n      \u2502                                        external connection.   \u2502\n      \u2502                                        Default is System      \u2502\n      \u2502                                        Bridge                 \u2502\n      \u2502 --dns            <dns-server-ip>       Set custom DNS server  \u2502\n      \u2502                                        for Internet/VPN0      \u2502\n      \u2502                                        transport. Default is  \u2502\n      \u2502                                        same as CML DNS        \u2502\n      \u2502 --retry                                If for some reason     \u2502\n      \u2502                                        your script lost       \u2502\n      \u2502                                        connectivity during    \u2502\n      \u2502                                        SD-WAN Manager boot,   \u2502\n      \u2502                                        you can add --retry to \u2502\n      \u2502                                        continue onboarding    \u2502\n      \u2502                                        the lab that is        \u2502\n      \u2502                                        already in CML         \u2502\n      \u2502 --ip_type        <ip_type>             IP type to use for     \u2502\n      \u2502                                        deployment: v4, v6, or \u2502\n      \u2502                                        dual. Default is v4.   \u2502\n      \u2502                                        [default: v4]          \u2502\n      \u2502 --help       -h                        Show this message and  \u2502\n      \u2502                                        exit.                  \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\nTime to complete the deployment task depends on:\n\n- SD-WAN software version\n- CML resources\n\n### Add Task\n\nThis task adds Catalyst SD-WAN nodes (Validators/Controllers/Edges) into existing Catalyst SD-WAN lab. It will automatically recognize the IP type (v4/v6/dual) and onboard the devices using same IP type as discovered. This task will:\n\n1. Add requested number of nodes to the CML topology and boot them with cloud-init configuration\n2. Once nodes boot up, automatically onboard them to SD-WAN Manager\n3. For Controller/Edge nodes, automatically attach basic device template / configuration group\n4. For Validator nodes, automatically update Validator FQDN mapping with new IP addresses\n\nThis task has several task-specific parameters.\n\n      sdwan-lab add -h\n\n       Usage: sdwan-lab add [OPTIONS] <number-of-devices> <device-type> <software-version>\n\n      positional arguments:\n      <number-of-devices>   Number of devices to be added.\n      <device-type>         Type of device/s to be added (e.g. validator, controller, edge, sdrouting).\n      <software-version>    Software version that will be used.\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --manager        <manager-ip>        SD-WAN Manager IP address, can also be defined via MANAGER_IP environment                                       \u2502\n      \u2502 --muser          <manager-user>      SD-WAN Manager username, can also be defined via MANAGER_USER environment variable.                             \u2502\n      \u2502 --mpassword      <manager-password>  SD-WAN Manager password, can also be defined via MANAGER_PASSWORD environment variable.                         \u2502\n      \u2502 --lab            <lab_name>          CML Lab name, can also be defined via LAB_NAME environment variable.                                            \u2502\n      \u2502 --cpus           <cpus>              Set custom number of CPUs for the device.                                                                       \u2502\n      \u2502 --ram            <ram>               Set custom RAM size for the device in MB.                                                                       \u2502\n      \u2502 --help       -h                      Show this message and exit.                                                                                     \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\nBelow you will find few examples of add task:\n\n    sdwan-lab add 1 validator 20.9.4 --lab sdwan1\n    sdwan-lab add 2 controllers 20.12.2 --lab sdwan2\n    sdwan-lab add 5 edges 17.09.03a --lab vsdwan1\n    sdwan-lab add 1 edge 17.12.04 --cpu 8 --ram 8192\n    sdwan-lab add 2 sdrouting 17.12.2 --lab vsdwan1\n\n### Backup Task\n\nThis task creates a backup of the Catalyst SD-WAN lab running in CML. CML doesn't natively support configuration export from Catalyst SD-WAN nodes, but this script can help you to save your Catalyst SD-WAN configuration. This task will:\n\n1. For Manager, Validator, Controller and WAN Edge nodes (SD-WAN and SD-Routing), create configuration backup.\n2. For non-SD-WAN nodes, export the configuration if it's supported by CML.\n3. Save the CML topology with exported configuration.\n4. Create a backup of SD-WAN Manager templates, policies and configuration groups using [Sastre](https://github.com/CiscoDevNet/sastre).\n\nThis task has several task-specific parameters, including working directory where backup is saved.\n\n      sdwan-lab backup -h\n\n       Usage: sdwan-lab backup [OPTIONS]\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --manager        <manager-ip>        SD-WAN Manager IP address, can also be defined via MANAGER_IP environment                                                                             \u2502\n      \u2502 --muser          <manager-user>      SD-WAN Manager username, can also be defined via MANAGER_USER environment variable.                                                                   \u2502\n      \u2502 --mpassword      <manager-password>  SD-WAN Manager password, can also be defined via MANAGER_PASSWORD environment variable.                                                               \u2502\n      \u2502 --lab            <lab_name>          CML Lab name, can also be defined via LAB_NAME environment variable.                                                                                  \u2502\n      \u2502 --workdir        <directory>         Backup destination folder                                                                                                                             \u2502\n      \u2502 --help       -h                      Show this message and exit.                                                                                                                           \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n### Restore Task\n\nThis task restores Catalyst SD-WAN lab from a backup. This task will:\n\n1. Import the CML topology from the backup and boot the Catalyst SD-WAN control components first.\n2. Once control components are up, configure the control plane (control components, certificates, etc.).\n3. Restore SD-WAN Manager templates, policies and configuration groups using [Sastre](https://github.com/CiscoDevNet/sastre).\n4. Verify if there are any WAN Edges in the topology (SD-WAN and SD-Routing). If yes, then generate the new OTP and automatically reonboard them to SD-WAN Manager.\n\nThis task has several task-specific parameters, including working directory from where backup is restored. You can also overwrite the software version for control components and SD-WAN/SD-Routing Edges (note that specifying version lower than the one in the backup is not supported).\n\n      sdwan-lab restore -h\n\n       Usage: sdwan-lab restore [OPTIONS]\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --manager             <manager-ip>        SD-WAN Manager IP address, can also be defined via      \u2502\n      \u2502                                           MANAGER_IP environment                                  \u2502\n      \u2502 --muser               <manager-user>      SD-WAN Manager username, can also be defined via        \u2502\n      \u2502                                           MANAGER_USER environment variable.                      \u2502\n      \u2502 --mpassword           <manager-password>  SD-WAN Manager password, can also be defined via        \u2502\n      \u2502                                           MANAGER_PASSWORD environment variable.                  \u2502\n      \u2502 --mmask               <manager-mask>      Subnet mask for given SD-WAN Manager IP (e.g. /24), can \u2502\n      \u2502                                           also be defined via MANAGER_MASK environment variable.  \u2502\n      \u2502 --mgateway            <manager-gateway>   Gateway IP for given SD-WAN Manager IP, can also be     \u2502\n      \u2502                                           defined via MANAGER_GATEWAY environment variable.       \u2502\n      \u2502 --lab                 <lab_name>          CML Lab name, can also be defined via LAB_NAME          \u2502\n      \u2502                                           environment variable.                                   \u2502\n      \u2502 --workdir             <directory>         Restore source folder                                   \u2502\n      \u2502 --deleteexisting                          If there is already lab running with same name and      \u2502\n      \u2502                                           using same SD-WAN Manager IP, delete this lab before    \u2502\n      \u2502                                           restoring. Note the all running lab data will be lost!  \u2502\n      \u2502 --retry                                   If for some reason your script lost connectivity during \u2502\n      \u2502                                           SD-WAN Manager boot, you can add --retry to continue    \u2502\n      \u2502                                           onboarding the lab that is already in CML               \u2502\n      \u2502 --contr_version       <contr_version>     Change the controller version when restoring the lab.   \u2502\n      \u2502 --edge_version        <edge_version>      Change the SD-WAN edge version when restoring the lab.  \u2502\n      \u2502 --help            -h                      Show this message and exit.                             \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\nBelow you will find few examples of restore task:\n\n    sdwan-lab restore --workdir backup\n    sdwan-lab restore --workdir backup --deleteexisting\n    sdwan-lab restore --workdir backup --contr_version 20.16.1\n    sdwan-lab restore --workdir backup --contr_version 20.16.1 --edge_version 17.16.01a\n\n### Delete Task\n\nThis task deletes the CML lab and removes all it's data. Note after this operation, all lab data is lost.\n\nThis task has several task-specific parameters.\n\n      (venv) tzarski:~$sdwan-lab delete -h\n\n       Usage: sdwan-lab delete [OPTIONS]\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --lab        <lab_name>  CML Lab name, can also be defined via LAB_NAME environment variable.                                                                                              \u2502\n      \u2502 --force                  Delete the lab without asking for confirmation. Note the all lab data will be lost!                                                                               \u2502\n      \u2502 --help   -h              Show this message and exit.                                                                                                                                       \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n### Sign Task\n\nThis tasks reads the Certificate Signing Request (CSR) from a file and signs it using SD-WAN Lab Deployment Tool Root CA.\nAt the end, the task prints the signed certificate in standard output.\n\nThis task has several task-specific parameters.\n\n      sdwan-lab sign -h\n\n       Usage: sdwan-lab sign [OPTIONS] <csr_file>\n\n\n       positional arguments:\n         <csr_file>  Certificate Signing Request (CSR) File\n\n      \u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n      \u2502 --help  -h    Show this message and exit.                                                                                                                                                  \u2502\n      \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n## Limitations and scale\n\nThe tool supports the following scale per CML lab:\n\n- 1 SD-wan Manager instance (Cluster is not yet supported)\n- 8 SD-WAN Validators (Documented support from CCO)\n- 12 SD-WAN Controllers (Documented support from CCO)\n- 20 SD-WAN Edges\n- 10 SD-Routing Edges\n\nThe tool requires a minimum of 9 nodes to deploy the topology; therefore, it is not supported on CML-Free.\n\n## Appendix - Offline/Air-gapped Installation\n\nIf you need to install the `catalyst-sdwan-lab` package in an air-gapped environment (without internet access), follow these steps:\n\nOn a machine with internet access, download the package and all its dependencies.\n\n   ```\n   mkdir catalyst_sdwan_lab_packages\n   cd catalyst_sdwan_lab_packages\n   pip download catalyst-sdwan-lab\n   ```\n   This will create a local directory containing the package `.whl` or `.tar.gz` files along with all its dependencies.\n\nTransfer the folder to the Air-Gapped Environment.\n\nOn the air-gapped machine, create a directory to store the virtual environment and runtime files:\n\n    mkdir csdwan\n    cd csdwan\n\nCreate virtual environment:\n\n    python3 -m venv venv\n\nActivate virtual environment:\n\n    source venv/bin/activate\n\nInstall the package and its dependencies from the transferred files:\n\n    pip install --no-index --find-links=/path/to/catalyst_sdwan_lab_packages catalyst-sdwan-lab\n\nReplace `/path/to/catalyst_sdwan_lab_packages` with the path where the downloaded files were copied.\n\nVerify that SD-WAN Lab tool can run:\n\n    sdwan-lab --version\n\nYou can also use the following shortcut to run any lab task:\n\n    csdwan --version\n\n## Appendix - WSL Installation\n\nTo install WSL on your Windows VM or Physical machine. Ensure that the HW Virutalization is enabled in the BIOS or VM Defintion.\n\nIf its on Windows server you may need to run this command to allow the WSL to function properly\n\nOpen PowerShell as Administrator and run:\n\n`Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux`\n\nInstall WSL with default distribution (Ubuntu)\nOpen PowerShell and run\n\n`wsl --install`\n\nOnce the installation is finished and you have restarted Windows you are able to continue the installation of this tool as described in the [installation section](README.md#installing) of this document.\n\nYou can read more about [Linux on Windows with WSL here](https://learn.microsoft.com/en-us/windows/wsl/install).\n\n## FAQ\n\nQ1: My devices' consoles have stopped working after I created my own configuration groups. How do I recover console access?\n\nA1: Always include the `platform console serial` command in an CLI add-on feature parcel to ensure your consoles work from the CML UI. Note that after adding this command, a WAN Edge reboot is required.\n\nQ2: Can I SSH to my Manager instance directly?\n\nA2: Yes, you can if you are using an external IP. However, if you are using PATty, you cannot, as we only map the HTTPS port.\n\n## Authors\n\nTomasz Zarski (tzarski@cisco.com)\n\n## License\n\nBSD-3-Clause\n\n## Acknowledgments\n\n- Marcelo Reis and [Sastre](https://github.com/CiscoDevNet/sastre)\n- Inigo Alonso\n\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Catalyst SD-WAN Lab Deployment Tool - Automation Tool for managing Cisco Catalyst SD-WAN labs inside Cisco Modeling Labs",
    "version": "2.1.4",
    "project_urls": {
        "Homepage": "https://github.com/cisco-open/sdwan-lab-deployment-tool",
        "Repository": "https://github.com/cisco-open/sdwan-lab-deployment-tool"
    },
    "split_keywords": [
        "cisco",
        " catalyst",
        " sdwan",
        " lab"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "65bbe8a93628278c110b1821ae86efa31f2a324718983148a626739dfdaf115c",
                "md5": "434b3b2740987b49ff1f237d87a5d409",
                "sha256": "1e493e241bd014b65e8827b3dfbcadbbb049c82fe9670d3792a7311a4a134491"
            },
            "downloads": -1,
            "filename": "catalyst_sdwan_lab-2.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "434b3b2740987b49ff1f237d87a5d409",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0.0,>=3.9.2",
            "size": 1834532,
            "upload_time": "2025-09-10T19:47:51",
            "upload_time_iso_8601": "2025-09-10T19:47:51.757843Z",
            "url": "https://files.pythonhosted.org/packages/65/bb/e8a93628278c110b1821ae86efa31f2a324718983148a626739dfdaf115c/catalyst_sdwan_lab-2.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1e42ed39a7db8c5c4d2c3f57bdee57a4848e3eb85d9d468342cdd252396e6f51",
                "md5": "7e73e0510529e78cdb2c3877658839bd",
                "sha256": "048de6840e6af848185a95b5c1448df71c2b3dd9214e06a6b204bbe715560536"
            },
            "downloads": -1,
            "filename": "catalyst_sdwan_lab-2.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "7e73e0510529e78cdb2c3877658839bd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0.0,>=3.9.2",
            "size": 818050,
            "upload_time": "2025-09-10T19:47:53",
            "upload_time_iso_8601": "2025-09-10T19:47:53.814533Z",
            "url": "https://files.pythonhosted.org/packages/1e/42/ed39a7db8c5c4d2c3f57bdee57a4848e3eb85d9d468342cdd252396e6f51/catalyst_sdwan_lab-2.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-10 19:47:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cisco-open",
    "github_project": "sdwan-lab-deployment-tool",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "catalyst-sdwan-lab"
}
        
Elapsed time: 3.95603s