Skip to content

Commit

Permalink
Lesson Info and Setup Details
Browse files Browse the repository at this point in the history
  • Loading branch information
hpreston committed Nov 21, 2017
1 parent a0ef1e0 commit 80d594b
Show file tree
Hide file tree
Showing 64 changed files with 3,872 additions and 36 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,7 @@ venv*/

# Other Dev Stuff
.vagrant/
.package.metadata
package.tar
*.retry
ioxclient
66 changes: 36 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,43 @@
# Network Programmability Basics
# Network Programmability Basics

Code, Examples, and Resources for the Network Programmability Basics Video Course

## Table of Contents
## Table of Contents
* [General Workstation Setup](readme_resources/workstation_setup.md)
* [Operating System Considerations](readme_resources/workstation_setup.md#operating-system-considerations)
* [Setting up git](readme_resources/workstation_setup.md#setting-up-git)
* [Setting Up Python](readme_resources/workstation_setup.md#setting-up-python)
* [Postman](readme_resources/workstation_setup.md#postman)
* [DevNet Sandbox VPN Access](readme_resources/workstation_setup.md#devnet-sandbox-vpn-access)
* [Programming Fundamentals](programming_fundamentals/README.md)
* Data Formats: Understanding and using JSON, XML and YAML
* APIs are Everywhere... but what are they?
* Python Part 1: Python Language and Script Basics
* Python Part 2: Useful Python Libraries for Network Engineers
* REST APIs Part 1: HTTP is for more than Web Browsing
* REST APIs Part 2: Making REST API Calls with Postman
* [Network Device APIs](network_device_apis/README.md)
* Getting the “YANG” of it with Standard Data Models
* Good by SNMP <hello> NETCONF!
* Learn to CRUD with GET, POST and DELETE using RESTCONF
* NX-API Part 1: Get Started with APIs and Nexus
* NX-API Part 2: Dive into the Nexus Object Model
* [Data Formats: Understanding and using JSON, XML and YAML](programming_fundamentals/data_formats/README.md)
* [APIs are Everywhere... but what are they?](programming_fundamentals/apis/README.md)
* [REST APIs Part 1: HTTP is for more than Web Browsing](programming_fundamentals/rest_part_1/README.md)
* [REST APIs Part 2: Making REST API Calls with Postman](programming_fundamentals/rest_part_2/README.md)
* [Python Part 1: Python Language and Script Basics](programming_fundamentals/python_part_1/README.md)
* [Python Part 2: Working with Libraries and Virtual Environments](programming_fundamentals/python_part_2/README.md)
* [Python Part 3: Useful Python Libraries for Network Engineers](programming_fundamentals/python_part_3/README.md)
* [Network Device APIs](network_device_apis/README.md)
* [Getting the “YANG” of it with Standard Data Models](network_device_apis/yang/README.md)
* [Goodbye SNMP <hello> NETCONF!](network_device_apis/netconf/README.md)
* [Learn to CRUD with GET, POST and DELETE using RESTCONF](network_device_apis/restconf/README.md)
* [NX-API Part 1: Get Started with APIs and Nexus](network_device_apis/nxapi/README.md)
* [NX-API Part 2: Dive into the Nexus Object Model](network_device_apis/nxapi/README.md)
* [Network Controllers](network_controllers/README.md)
* Program your own DNA with APIC-EM APIs
* Got SDN? Understanding the ACI Programmability Options
* Network Control in the Cloud - Developing with Cisco Meraki
* DNA APIs Part 1: Exploring APIC-EM Apps via API
* DNA APIs Part 2: Troubleshooting with APIC-EM Programmability
* ACI Programmability Part 1: The ACI Object Model
* ACI Programmability Part 2: Using the ACI Toolkit
* [Program your own DNA with APIC-EM APIs](network_controllers/apicem/README.md)
* [Got SDN? Understanding the ACI Programmability Options](network_controllers/aci/README.md)
* [Network Control in the Cloud - Developing with Cisco Meraki](network_controllers/meraki/README.md)
* [DNA APIs Part 1: Exploring APIC-EM Apps via API](network_controllers/apicem/README.md)
* [DNA APIs Part 2: Troubleshooting with APIC-EM Programmability](network_controllers/apicem/README.md)
* [ACI Programmability Part 1: The ACI Object Model](network_controllers/aci/README.md)
* [ACI Programmability Part 2: Using the ACI Toolkit](network_controllers/aci/README.md)
* [Application Hosting and the Network](application_hosting/README.md)
* Cloud to Fog… Why Host Apps in the Network
* Linux at the Edge: Introduction to Guest Shell
* Python at the Edge: Super Charged Network Event Management
* Package, Deploy and Run Applications in the Network with IOx
* [Cloud to Fog… Why Host Apps in the Network](application_hosting/intro/README.md)
* [Linux at the Edge: Introduction to Guest Shell](application_hosting/guestshell/README.md)
* [Python at the Edge: Super Charged Network Event Management](application_hosting/python_onbox/README.md)
* [Package, Deploy and Run Applications in the Network with IOx](application_hosting/iox/README.md)
* [NetDevOps](netdevops/README.md)
* Configuration Management and the Network
* Ansible Part 1: What you need to Get Started
* Ansible Part 2: Using Ansible for Network Configuration
* Ansible Part 3: Your Network As Code

* [Configuration Management and the Network](netdevops/intro/README.md)
* [Ansible Part 1: What you need to Get Started](netdevops/ansible_part_1/README.md)
* [Ansible Part 2: Using Ansible for Network Configuration](netdevops/ansible_part_2/README.md)
* [Ansible Part 3: Your Network As Code](netdevops/ansible_part_3/README.md)
9 changes: 9 additions & 0 deletions application_hosting/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Application Hosting and the Network
In this module you will explore different options available for running code and hosting applications at the edge of the network, directly on switches, routers and other devices.

## Lessons

* [Cloud to Fog… Why Host Apps in the Network](intro/README.md)
* [Linux at the Edge: Introduction to Guest Shell](guestshell/README.md)
* [Python at the Edge: Super Charged Network Event Management](python_onbox/README.md)
* [Package, Deploy and Run Applications in the Network with IOx](iox/README.md)
48 changes: 48 additions & 0 deletions application_hosting/guestshell/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Linux at the Edge: Introduction to Guest Shell

## "Gitting" the Code
All of the code and examples for this lesson is located in the `netprog_basics/application_hosting/guestshell` directory. Clone and access it with the following commands:

```bash
git clone https://github.com/CiscoDevNet/netprog_basics
cd netprog_basics/application_hosting/guestshell
```

## Local Workstation Setup
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.

### Python Environment Setup
It is recommended that this lesson be completed using Python 3.6. A recent version of Python 2.7 or Python 3.5 should also work.

It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.

*There is no need to create independent venv for each lesson, but you can if you choose. At a minimum you should create 2 venvs, one for Python 2 and one for Python 3.*

Follow these steps to create and activate a venv.

***Note: If you are leveraging a shared venv across all lessons simply activate it.***

```bash
# OS X or Linux
virtualenv venv --python=python3
source venv/bin/activate
```

```bash
# Windows (assumes Python 3 is default)
virtualenv venv
venv/Scripts/activate
```

#### Install Python Requirements for Lesson
With the Virtual Environment activated, use pip to install the necessary requirements.

```bash
# From the code directory for this lesson
pip install -r requirements.txt
```

## DevNet Sandbox
This lesson leverages the [IOS XE Programmability](https://devnetsandbox.cisco.com/RM/Diagram/Index/7fd27b24-7034-477d-9ad2-e2c8096dd1a5?diagramType=Topology) Sandbox.

You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.
47 changes: 47 additions & 0 deletions application_hosting/guestshell/iosxe_guestshell_setup.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
! To be entered onto IOS XE Device

! ***** Step 1 *********
! Enable IOX
conf t
iox
exit

! Verify IOX
sh iox-service

! ***** Step 2 *********
! Create and Configure Virtual Port Group
conf t

interface VirtualPortGroup 0
ip add 192.168.35.1 255.255.255.0
no shut
exit

! ***** Step 3 *********
! Configure NAT
conf t

interface VirtualPortGroup0
ip nat inside
exit

! Interface connected to local network
interface GigabitEthernet1
ip nat outside
exit

ip access-list standard NAT_ACL
permit 192.168.0.0 0.0.255.255
exit

ip nat inside source list NAT_ACL \* interface GigabitEthernet1 overload

! ***** Step 4 *********
! Enable Guest Shell
! Entered from Enable Mode (not config)
! All entered on single line
guestshell enable VirtualPortGroup 0 guest-ip 192.168.35.2name-server 208.67.222.222

! Verify Guest Shell Running
show app-hosting list
Empty file.
2 changes: 2 additions & 0 deletions application_hosting/intro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Application Hosting and the Network
This lesson has no setup requirements.
64 changes: 64 additions & 0 deletions application_hosting/iox/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Package, Deploy and Run Applications in the Network with IOx

## "Gitting" the Code
All of the code and examples for this lesson is located in the `netprog_basics/application_hosting/iox` directory. Clone and access it with the following commands:

```bash
git clone https://github.com/CiscoDevNet/netprog_basics
cd netprog_basics/application_hosting/iox
```

## Local Workstation Setup
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.

### Python Environment Setup
It is recommended that this lesson be completed using Python 3.6. A recent version of Python 2.7 or Python 3.5 should also work.

It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.

*There is no need to create independent venv for each lesson, but you can if you choose. At a minimum you should create 2 venvs, one for Python 2 and one for Python 3.*

Follow these steps to create and activate a venv.

***Note: If you are leveraging a shared venv across all lessons simply activate it.***

```bash
# OS X or Linux
virtualenv venv --python=python3
source venv/bin/activate
```

```bash
# Windows (assumes Python 3 is default)
virtualenv venv
venv/Scripts/activate
```

#### Install Python Requirements for Lesson
With the Virtual Environment activated, use pip to install the necessary requirements.

```bash
# From the code directory for this lesson
pip install -r requirements.txt
```

### Docker Client Installation
In this lab, you will package and deploy a containerized application to IOx using Docker Tooling. To do so, you'll need Docker version 1.11 or higher installed for your workstation. Docker is supported across Linux, OS X, and Windows operating systems.

Visit [www.docker.com/get-docker](https://www.docker.com/get-docker), download and install the client for your platform.

### IOx Client Installation
IOx Client is an application you'll run use to package, deploy and install applications to IOx devices.

Download and install version 1.4 or higher from [Cisco Downloads](https://software.cisco.com/download/release.html?mdfid=286306005&softwareid=286306762&release=1.4.0&relind=AVAILABLE&rellifecycle=&reltype=latest).

Save ioxclient into one of the following locations:

* The `netprog_basics/application_hosting/iox` directory on your workstation
* A directory that exists within your `PATH` environment variable.
* *Example: `/usr/local/bin` on OS X or Linux*

## DevNet Sandbox
This lesson leverages the [IOx]() Sandbox.

You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.
Empty file.
67 changes: 67 additions & 0 deletions application_hosting/python_onbox/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Python at the Edge: Super Charged Network Event Management

## "Gitting" the Code
All of the code and examples for this lesson is located in the `netprog_basics/application_hosting/python_onbox` directory. Clone and access it with the following commands:

```bash
git clone https://github.com/CiscoDevNet/netprog_basics
cd netprog_basics/application_hosting/python_onbox
```

## Local Workstation Setup
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.

### Python Environment Setup
It is recommended that this lesson be completed using Python 3.6. A recent version of Python 2.7 or Python 3.5 should also work.

It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.

*There is no need to create independent venv for each lesson, but you can if you choose. At a minimum you should create 2 venvs, one for Python 2 and one for Python 3.*

Follow these steps to create and activate a venv.

***Note: If you are leveraging a shared venv across all lessons simply activate it.***

```bash
# OS X or Linux
virtualenv venv --python=python3
source venv/bin/activate
```

```bash
# Windows (assumes Python 3 is default)
virtualenv venv
venv/Scripts/activate
```

#### Install Python Requirements for Lesson
With the Virtual Environment activated, use pip to install the necessary requirements.

```bash
# From the code directory for this lesson
pip install -r requirements.txt
```

## DevNet Sandbox
This lesson leverages the [IOS XE Programmability](https://devnetsandbox.cisco.com/RM/Diagram/Index/7fd27b24-7034-477d-9ad2-e2c8096dd1a5?diagramType=Topology) Sandbox.

You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.

### Post Reservation Setup
This lesson assumes the following about the Sandbox:

* Guest Shell has already been enabled on the IOS XE Sandbox instance
* `git` has been installed within the running Guest Shell container

If you have already completed the exercises within the **Linux at the Edge: Introduction to Guest Shell** lesson using your Sandbox instance then you are all set and ready to go. If not, you will need to complete the following additional steps.

1. Enable Guest Shell: Use the commands and information from [iosxe\_guestshell\_setup.txt](iosxe_guestshell_setup.txt).

**Clone Code Repo to Guest Shell**

With Guest Shell setup, now clone the code for the labs into Guest Shell in your Sandbox Instance.

```
! From Enable mode on your Sandbox Device
guestshell run git clone https://github.com/CiscoDevNet/netprog_basics /flash/netprog_basics
```
52 changes: 52 additions & 0 deletions application_hosting/python_onbox/iosxe_guestshell_setup.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
! To be entered onto IOS XE Device

! ***** Step 1 *********
! Enable IOX
conf t
iox
exit

! Verify IOX
sh iox-service

! ***** Step 2 *********
! Create and Configure Virtual Port Group
conf t

interface VirtualPortGroup 0
ip add 192.168.35.1 255.255.255.0
no shut
exit

! ***** Step 3 *********
! Configure NAT
conf t

interface VirtualPortGroup0
ip nat inside
exit

! Interface connected to local network
interface GigabitEthernet1
ip nat outside
exit

ip access-list standard NAT_ACL
permit 192.168.0.0 0.0.255.255
exit

ip nat inside source list NAT_ACL \* interface GigabitEthernet1 overload

! ***** Step 4 *********
! Enable Guest Shell
! Entered from Enable Mode (not config)
! All entered on single line
guestshell enable VirtualPortGroup 0 guest-ip 192.168.35.2name-server 208.67.222.222

! Verify Guest Shell Running
show app-hosting list

! ***** Step 5 *********
! Install git within Guest Shell and Clone Code
guestshell run sudo yum install git
guestshell run git clone https://github.com/CiscoDevNet/netprog_basics /flash/netprog_basics
Empty file.
9 changes: 9 additions & 0 deletions netdevops/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Application Hosting and the Network
In this module you will explore different options available for running code and hosting applications at the edge of the network, directly on switches, routers and other devices.

## Lessons

* [Configuration Management and the Network](intro/README.md)
* [Ansible Part 1: What you need to Get Started](ansible_part_1/README.md)
* [Ansible Part 2: Using Ansible for Network Configuration](ansible_part_2/README.md)
* [Ansible Part 3: Your Network As Code](ansible_part_3/README.md)
Loading

0 comments on commit 80d594b

Please sign in to comment.