Skip to content

Unified Branch - Branch as Code


What You Will Learn

This lab introduces Unified Branch - Branch as Code (BaC) — an approach to managing Unified Branch network infrastructure declaratively using YAML files, Terraform, and CI/CD automation. You will use a real Cisco lab environment managed through Meraki Dashboard.

The lab is organized into two parts:

Part A Part B
Title Branch as Code with GitHub Actions CI/CD Branch as Code Step By Step with Terraform
Required? ✅ Required ⚙️ Optional
Local installs None — runs entirely in the cloud Terraform, Git, Python on your laptop
What you do Fork the repo, configure secrets, understand the BaC data model, trigger automated CI/CD pipelines, run validation and integration tests Clone the repo locally, understand the BaC data model, and deploy branch networks directly from your terminal

Note

Start with Part A. It is the primary lab experience and requires nothing installed on your laptop — just a GitHub account and a browser.

Part B is an optional deep-dive for learners who want hands-on experience running Terraform locally. It requires the environment to be reset first — confirm with your proctor before starting.


How to Read the Lab Guide

Important

Critical instructions — skipping or misreading them could break your lab or affect a production environment.

Note

Warnings and reminders — things that are easy to overlook.

Hint

Helpful tips, shortcuts, or pointers to make the lab easier.

Information

Extra context, background, or links to official documentation.


Lab Access — BYOA Model

This lab uses the Bring Your Own Account (BYOA) model. You will use your own Meraki Dashboard account and your own API key throughout both labs. Cisco does not store or manage your credentials.

If the email you used for the lab reservation is associated with an existing Dashboard account, you should have received a notification that new Cisco Meraki administrator privileges have been granted to your account. Follow the instructions in the email to accept the invite.

Example email for existing dashboard account

If this is your first time accessing Meraki Dashboard with this email, the message will guide you to create a password.

Example email for new dashboard account

Important

If your Meraki Dashboard account is also associated with other organizations — especially production environments — DO NOT perform any steps in this guide on your own organization. Only work within the provided lab organization, which follows the naming pattern "Org-[org_id]". To confirm you are in the right org, navigate to Organization > Administrators and verify that you see an admin named ENLS with the email launchpad-labs-ops@cisco.com.


Lab Topology

Unified Branch - Branch as Code Lab Topo

Your lab pod includes the following Meraki hardware:

Location Device Role
Datacenter MX85 Pre-configured by proctor; your VPN hub
Branch 1 MX85 + MS250 + CW9172H Deployed by you in this lab
Branch 2 MX85 + MS250 + CW9172H Deployed by you in this lab

In both labs, you will use automation to create the Unified Branch 1 and Unified Branch 2 networks inside your existing lab organization, claim the physical devices, and configure them with the BaC data model.


What Is Branch as Code?

Information

Branch as Code (BaC) extends Infrastructure as Code (IaC) principles to Cisco Unified Branch network configuration and policy management. Instead of clicking through a GUI, you describe your desired network state in YAML files, and automation tools translate those files into Meraki API calls that configure your devices. BaC uses Terraform and a curated set of YAML data model files to provision network infrastructure consistently across many branch sites.

Learn more at netascode.cisco.com and the Cisco Unified Branch CVD.

Note: In this lab, we are using a different switch model that is outside the CVD scope. However, the learning experience for Branch as Code remains the same.


Prerequisites

For Both Labs

Before starting, make sure you have:

  • A Meraki Dashboard account (you will receive an email invite when the lab pod is provisioned)
  • A GitHub account at github.com

Part A — No Additional Installs Required

Part A runs entirely in GitHub Actions (cloud-hosted runners). You only need a browser and your GitHub account.

Part B — Local Tools Required

Part B requires the following tools installed on your laptop:

Tool Minimum Version Install
Terraform 1.9 or later developer.hashicorp.com/terraform/downloads
Git Any recent version git-scm.com
Python 3.11 or later python.org

Environment variables

The lab repository includes a .env.example template. When the lab asks you to configure environment variables, start by copying that file and renaming the copy to .env, then update the values in .env to match your lab environment.


Ready to Start?

Proceed to Part A — Branch as Code with GitHub Actions CI/CD.

When you have completed Part A and want to go further, continue to Part B — Branch as Code with Terraform.