-
Notifications
You must be signed in to change notification settings - Fork 458
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
64 changed files
with
3,872 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -103,3 +103,7 @@ venv*/ | |
|
||
# Other Dev Stuff | ||
.vagrant/ | ||
.package.metadata | ||
package.tar | ||
*.retry | ||
ioxclient |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
52
application_hosting/python_onbox/iosxe_guestshell_setup.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Oops, something went wrong.