Critical Python Catchup & Review
- Overview of Python and Ansible
- Python white space rules & best practices
- Printing and more Printing
- Date types and Variables
- Packing and Unpacking Variables
- f Strings
- Conditional expressions
- Relational and Boolean operators
- Lists, Tuples, Dictionaries
- Indexing and slicing
- Built-in functions
- Iterating with Loops (for and while)
- Working with files
- Software Control Management (SCM) (Git, Github, Bitbucket, Cloudshare, etc.)
- Using Python to access REST interfaces
- Working with JSON
- Python, Ansible and Paramiko
- Using Paramiko to SSH with keys and passwords
- RESTful API review
- API keys
- Paramiko Review
- Using Paramiko to SFTP with keys and passwords
Python and Network Automation
- Introduction to Netmiko (automating routers and switches)
- Using Netmiko to send commands to / from network devices
- Working with YAML
- Converting JSON to YAML with Python
- Ansible keywords
- YAML and JSON for data exchange
- Ansible and YAML
- Ansible Playbook components
- Tying together Python and Ansible – Using Python within Ansible
- Ansible Network Modules
- What is new in Ansible (most current updates / release notes)
- Network Agnostic modules
- Writing network playbooks
- Reviewing the construction of network playbooks
- Writing Ansible playbooks that respond to network failures
Blending Python and Ansible Skillsets
- Review how to use Python within Ansible
- Calling Python scripts with Ansible
- Jinja2 Templating Engine for Python (and Ansible)
- Using Templates in Ansible playbooks
- Jinja2 filters, looping, and other useful tricks for automating with Ansible
- Playbook tagging for selective runs
- When to use Python and when to use Ansible
- “Big Picture” options for using Python & Ansible within your Network
- Ansible Roles
Customizing Ansible with Python
- Review – Running Scripts with Ansible
- Prompting for Ansible user input
- Ansible Galaxy & Getting at Roles
- Writing a custom Ansible Module with Python
- Ansible “Engine” vs Ansible “Tower” – marketing hype, capabilities, costs, etc.
- Case Study: Automate your Enterprise Network
- When to use Python and when to use Ansible
- Writing your own Ansible modules in Python
- “Big Picture” options for using Python & Ansible within your Network
- Overview – NETCONF / YANG and what they mean for Python and Ansible
- Molecule – Testing your roles
Lab Outline
- Lab 0 – Setting up the Admin PC for Development
- Lab 1 – Build your First Python Script
- Lab 2 – More Python
- Lab 3 – Strings in Python
- Lab 4 – Using argv
- Lab 5 – Lists and Dictionaries
- Lab 6 – Loops and if-else
- Lab 7 – Defining a Function
- Lab 8 – Using Python Scripting and the REST API
- Lab 9 – Telnetib (Optional)
- Lab 10 – Paramiko
- Lab 11 – Netmiko
- Lab 12 – Ansible Installation
- Lab 13 – Verify the Ansible Installation
- Lab 14 – CSRX-1 SSH Connectivity
- Lab 15 – Cisco IOS Show Command Execution with Ansible
- Lab 16 – Configuration Changes with Ansible
- Lab 17 – Create a Custom Module for Ansible
- Lab 18 – Installing and Using a Role from Galaxy
- Lab 19 – Ansible and Jinja2 Templating
- Lab 20 – Integrating Template Instantiation and Device Synchronization into a Playbook