Introduction
To the lab

In the not so distant past the concept of SDN was born into the marketplace of network devices. The birth of SDN was foundationally based on the requirement that computers, instead of people, manage and control network devices. As networks grow it becomes more and more complex for people to be able to manage them.

With the birth of SDN, came the emergence of SDN controllers. Computers that where specialized in connecting to multiple network devices and controlling what they did. They handled tasks as updating routing tables based on cost metrics of internet pipes to simply being able to get the version of code running on many devices at once.

Most of the focus on SDN was on the efficiency gains that were possible in managing a growing trend of networks. IT was forced to manage more and more devices with the same amount of people or even less. Compute clouds became more relevant to business and this caused even more focus on how application policies had to be visible in the network. IT had to manage more and more un-controlled movement of data across it's network to be able to safegaurd it's capital knowledge.

Benefits of Cisco ACI

Cisco ACI enables automation that accelerates infrastructure deployment and governance, simplifies management to easily move workloads across a multifabric and multicloud framework, and proactively secures against risk arising from anywhere. It radically simplifies, optimizes, and expedites the application deployment lifecycle.

...
Automation and Consistency

Achieve resource elasticity with automation through common policies for data center operations.

...
Multicloud acceleration

Extend consistent policy management across multiple on-premises and cloud instances for security, governance, and compliance.

...
Protect your network with zero-trust security

Get business continuity, disaster recovery, and highly secure networking with a zero-trust security model.

...
Centralized management

Transform Day 2 Operations to a more proactive model and automate troubleshooting, root-cause analysis, and remediation.

Modern data centers are dynamic. IT operations must meet the expectation of quality of service business needs in a rapidly changing environment. Cisco ACI transforms IT operations from reactive to proactive with a highly intelligent set of software capabilities that analyzes every component of the data center to ensure business intent, guarantee reliability, and identify performance issues in the network before they happen.

Evolution of automation

Originally many IT operators and architects managed the network with automation using CLI control interaction systems based on languages like expect and TCL. These scripts ran against devices and took meticulous considerations to get them to work correctly. Any person that has spent time in the industry has memories of these. As time progressed, different vendors provided various mechanisms to give IT administrators the tools to automate larger and larger tasks.

Cisco ACI was brought into the world with a foundation of programing. What this means is that Cisco ACI at it's core was a system designed with an API core that made it possible to build the interface for human interaction and also the interface for programatic interactions. When you look at the history of networking products, not only by a company like Cisco; the programatic interfaces where created after the human interfaces. This would lead to situations that some elements of how to use the product where always a step behind from API constructs. Not with ACI... The foundation is the API which allows for a better way of developing and expanding the product.

At the core of ACI is a REST API that is used by everything in the ACI world, for both the controller and switches. The CLI in a ACI switch actually is making calls to the REST interface of the of the switch. It then parses the return information and formats it in a way that is standard to Cisco. This consistency is unique, as this gives the user of the ACI fabric a system that is 100% API based instead of a system that has an API layered on top of a separate data management engine (DME) that might lead to aspects of the system not available to the API. We will examine this throughout the lab.

So here you are with the question as to how to tackle this programatic thing. If your background is programing then you are set! Just learn this API and you can accelerate and simply many workloads. If your background is networking with a little of scripting in TCL/Expect then you feel like the challenge is heavier. With this lab we want to show you that through small steps you can achieve different levels of automation capabilities. From scripts that would help you achieve all kind of tasks to building the framework of an application on a web browser that we hope shows you the full potential of ACI technology by Cisco.

The Lab

There are many ways to approach the accelerated benefits of programability in networking. You can use tools like Ansible and Terraform to assist you in completeing repeating tasks and avoiding human error. There is also the benefit us a graphical interface in a web browser that simplifies the interaction to the fabric, as it makes it easier for the operators to interact with the network.

Yet here is the challenge that you face. Do you know how to code? Do you have the time to code? How to support what you code and how will the next person expand and utilize that. In this lab we provide you with various ways to view the options that you have: scripting with Ansible to construct ACI elements and verify they are correctl setup to building an application in a web browser that allows you to see the full potential of ACI.

Your Desktop Environment

One of the challenges with providing a lab environment to students around programing is having a programing environment that is consistent and easy to use. For this lab we will be using a version of Microsoft Visual Studio Code that runs inside a web browser. Visual studio code is actually written in Electron.io that is a cross platform development platorm based on chromium and javascript. Just like the editor Atom and various other applications, developers have been using Eletron.io as an easy way for cross platform development.

If you are familiar with Visual Studio Code, this will be just like it is as a standalone editor but embeded inside a browser window. We do this to provide you a linux underpinning to work with as the computers for Cisco Live are commonly Windows machines that are not the best platform for development ( in our humble opinion ). If the proctors of the lab haven't already setup your POD, you can connect to the web interface at:

When asked for a password, the lab proctors will provide this to you.

Embedded Terminal

To be able to execute many aspects of the lab you will be using the Terminal that is embedded inside of this Desktop Environment. Just like VSCode allows you to run a terminal in the application, the versions of VSCode running on this browser window can do the same. So whenever you see in the lab guide to do commands in the terminal you will be using this window.

Step 1 - Open the Terminal Window in the browser base Visual Studio Code

To activate the terminal window you can observe the following screen capture:

That will then open a window at the bottom of your screen:


Throughout the lab you will see two separate areas that you will be working with. The Terminal to execute commands and the code editor to edit the programming in the different languages that you will cover in this lab.

You will find that the lab is designed in such a way that you can complete even if you are not sure about what you are doing. In this lab the purpose is to introduce you to the concepts of programability and ACI. If you don't understand something, don't worry. We all started in that place of uncertainity in trying to understand code development. If you like puzzles and solving logical problems, then you will love programability.