Skip to content

Commit 80d594b

Browse files
committed
Lesson Info and Setup Details
1 parent a0ef1e0 commit 80d594b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3872
-36
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,7 @@ venv*/
103103

104104
# Other Dev Stuff
105105
.vagrant/
106+
.package.metadata
107+
package.tar
108+
*.retry
109+
ioxclient

README.md

+36-30
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,43 @@
1-
# Network Programmability Basics
1+
# Network Programmability Basics
22

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

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

application_hosting/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Application Hosting and the Network
2+
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.
3+
4+
## Lessons
5+
6+
* [Cloud to Fog… Why Host Apps in the Network](intro/README.md)
7+
* [Linux at the Edge: Introduction to Guest Shell](guestshell/README.md)
8+
* [Python at the Edge: Super Charged Network Event Management](python_onbox/README.md)
9+
* [Package, Deploy and Run Applications in the Network with IOx](iox/README.md)
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Linux at the Edge: Introduction to Guest Shell
2+
3+
## "Gitting" the Code
4+
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:
5+
6+
```bash
7+
git clone https://github.com/CiscoDevNet/netprog_basics
8+
cd netprog_basics/application_hosting/guestshell
9+
```
10+
11+
## Local Workstation Setup
12+
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.
13+
14+
### Python Environment Setup
15+
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.
16+
17+
It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.
18+
19+
*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.*
20+
21+
Follow these steps to create and activate a venv.
22+
23+
***Note: If you are leveraging a shared venv across all lessons simply activate it.***
24+
25+
```bash
26+
# OS X or Linux
27+
virtualenv venv --python=python3
28+
source venv/bin/activate
29+
```
30+
31+
```bash
32+
# Windows (assumes Python 3 is default)
33+
virtualenv venv
34+
venv/Scripts/activate
35+
```
36+
37+
#### Install Python Requirements for Lesson
38+
With the Virtual Environment activated, use pip to install the necessary requirements.
39+
40+
```bash
41+
# From the code directory for this lesson
42+
pip install -r requirements.txt
43+
```
44+
45+
## DevNet Sandbox
46+
This lesson leverages the [IOS XE Programmability](https://devnetsandbox.cisco.com/RM/Diagram/Index/7fd27b24-7034-477d-9ad2-e2c8096dd1a5?diagramType=Topology) Sandbox.
47+
48+
You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
! To be entered onto IOS XE Device
2+
3+
! ***** Step 1 *********
4+
! Enable IOX
5+
conf t
6+
iox
7+
exit
8+
9+
! Verify IOX
10+
sh iox-service
11+
12+
! ***** Step 2 *********
13+
! Create and Configure Virtual Port Group
14+
conf t
15+
16+
interface VirtualPortGroup 0
17+
ip add 192.168.35.1 255.255.255.0
18+
no shut
19+
exit
20+
21+
! ***** Step 3 *********
22+
! Configure NAT
23+
conf t
24+
25+
interface VirtualPortGroup0
26+
ip nat inside
27+
exit
28+
29+
! Interface connected to local network
30+
interface GigabitEthernet1
31+
ip nat outside
32+
exit
33+
34+
ip access-list standard NAT_ACL
35+
permit 192.168.0.0 0.0.255.255
36+
exit
37+
38+
ip nat inside source list NAT_ACL \* interface GigabitEthernet1 overload
39+
40+
! ***** Step 4 *********
41+
! Enable Guest Shell
42+
! Entered from Enable Mode (not config)
43+
! All entered on single line
44+
guestshell enable VirtualPortGroup 0 guest-ip 192.168.35.2name-server 208.67.222.222
45+
46+
! Verify Guest Shell Running
47+
show app-hosting list

application_hosting/guestshell/requirements.txt

Whitespace-only changes.

application_hosting/intro/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Application Hosting and the Network
2+
This lesson has no setup requirements.

application_hosting/iox/README.md

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Package, Deploy and Run Applications in the Network with IOx
2+
3+
## "Gitting" the Code
4+
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:
5+
6+
```bash
7+
git clone https://github.com/CiscoDevNet/netprog_basics
8+
cd netprog_basics/application_hosting/iox
9+
```
10+
11+
## Local Workstation Setup
12+
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.
13+
14+
### Python Environment Setup
15+
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.
16+
17+
It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.
18+
19+
*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.*
20+
21+
Follow these steps to create and activate a venv.
22+
23+
***Note: If you are leveraging a shared venv across all lessons simply activate it.***
24+
25+
```bash
26+
# OS X or Linux
27+
virtualenv venv --python=python3
28+
source venv/bin/activate
29+
```
30+
31+
```bash
32+
# Windows (assumes Python 3 is default)
33+
virtualenv venv
34+
venv/Scripts/activate
35+
```
36+
37+
#### Install Python Requirements for Lesson
38+
With the Virtual Environment activated, use pip to install the necessary requirements.
39+
40+
```bash
41+
# From the code directory for this lesson
42+
pip install -r requirements.txt
43+
```
44+
45+
### Docker Client Installation
46+
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.
47+
48+
Visit [www.docker.com/get-docker](https://www.docker.com/get-docker), download and install the client for your platform.
49+
50+
### IOx Client Installation
51+
IOx Client is an application you'll run use to package, deploy and install applications to IOx devices.
52+
53+
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).
54+
55+
Save ioxclient into one of the following locations:
56+
57+
* The `netprog_basics/application_hosting/iox` directory on your workstation
58+
* A directory that exists within your `PATH` environment variable.
59+
* *Example: `/usr/local/bin` on OS X or Linux*
60+
61+
## DevNet Sandbox
62+
This lesson leverages the [IOx]() Sandbox.
63+
64+
You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.

application_hosting/iox/requirements.txt

Whitespace-only changes.
+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Python at the Edge: Super Charged Network Event Management
2+
3+
## "Gitting" the Code
4+
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:
5+
6+
```bash
7+
git clone https://github.com/CiscoDevNet/netprog_basics
8+
cd netprog_basics/application_hosting/python_onbox
9+
```
10+
11+
## Local Workstation Setup
12+
Be sure to complete the [General Workstation Setup](https://github.com/CiscoDevNet/netprog_basics/readme_resources/workstation_setup.md) instructions before beginning this lesson.
13+
14+
### Python Environment Setup
15+
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.
16+
17+
It is highly recommended to leverage Python Virtual Environments for completing exercises in this course.
18+
19+
*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.*
20+
21+
Follow these steps to create and activate a venv.
22+
23+
***Note: If you are leveraging a shared venv across all lessons simply activate it.***
24+
25+
```bash
26+
# OS X or Linux
27+
virtualenv venv --python=python3
28+
source venv/bin/activate
29+
```
30+
31+
```bash
32+
# Windows (assumes Python 3 is default)
33+
virtualenv venv
34+
venv/Scripts/activate
35+
```
36+
37+
#### Install Python Requirements for Lesson
38+
With the Virtual Environment activated, use pip to install the necessary requirements.
39+
40+
```bash
41+
# From the code directory for this lesson
42+
pip install -r requirements.txt
43+
```
44+
45+
## DevNet Sandbox
46+
This lesson leverages the [IOS XE Programmability](https://devnetsandbox.cisco.com/RM/Diagram/Index/7fd27b24-7034-477d-9ad2-e2c8096dd1a5?diagramType=Topology) Sandbox.
47+
48+
You will need to reserve an instance of the sandbox, and establish a VPN connection to your individual Sandbox to complete this lab.
49+
50+
### Post Reservation Setup
51+
This lesson assumes the following about the Sandbox:
52+
53+
* Guest Shell has already been enabled on the IOS XE Sandbox instance
54+
* `git` has been installed within the running Guest Shell container
55+
56+
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.
57+
58+
1. Enable Guest Shell: Use the commands and information from [iosxe\_guestshell\_setup.txt](iosxe_guestshell_setup.txt).
59+
60+
**Clone Code Repo to Guest Shell**
61+
62+
With Guest Shell setup, now clone the code for the labs into Guest Shell in your Sandbox Instance.
63+
64+
```
65+
! From Enable mode on your Sandbox Device
66+
guestshell run git clone https://github.com/CiscoDevNet/netprog_basics /flash/netprog_basics
67+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
! To be entered onto IOS XE Device
2+
3+
! ***** Step 1 *********
4+
! Enable IOX
5+
conf t
6+
iox
7+
exit
8+
9+
! Verify IOX
10+
sh iox-service
11+
12+
! ***** Step 2 *********
13+
! Create and Configure Virtual Port Group
14+
conf t
15+
16+
interface VirtualPortGroup 0
17+
ip add 192.168.35.1 255.255.255.0
18+
no shut
19+
exit
20+
21+
! ***** Step 3 *********
22+
! Configure NAT
23+
conf t
24+
25+
interface VirtualPortGroup0
26+
ip nat inside
27+
exit
28+
29+
! Interface connected to local network
30+
interface GigabitEthernet1
31+
ip nat outside
32+
exit
33+
34+
ip access-list standard NAT_ACL
35+
permit 192.168.0.0 0.0.255.255
36+
exit
37+
38+
ip nat inside source list NAT_ACL \* interface GigabitEthernet1 overload
39+
40+
! ***** Step 4 *********
41+
! Enable Guest Shell
42+
! Entered from Enable Mode (not config)
43+
! All entered on single line
44+
guestshell enable VirtualPortGroup 0 guest-ip 192.168.35.2name-server 208.67.222.222
45+
46+
! Verify Guest Shell Running
47+
show app-hosting list
48+
49+
! ***** Step 5 *********
50+
! Install git within Guest Shell and Clone Code
51+
guestshell run sudo yum install git
52+
guestshell run git clone https://github.com/CiscoDevNet/netprog_basics /flash/netprog_basics

application_hosting/python_onbox/requirements.txt

Whitespace-only changes.

netdevops/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Application Hosting and the Network
2+
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.
3+
4+
## Lessons
5+
6+
* [Configuration Management and the Network](intro/README.md)
7+
* [Ansible Part 1: What you need to Get Started](ansible_part_1/README.md)
8+
* [Ansible Part 2: Using Ansible for Network Configuration](ansible_part_2/README.md)
9+
* [Ansible Part 3: Your Network As Code](ansible_part_3/README.md)

0 commit comments

Comments
 (0)