Day 01
Python Basics Review
- Overview of Python and Ansible
- Python whitespace rules & best practices
- Conditional expressions
- Relational and Boolean operators
- Lists, Tuples, Dictionaries
- Indexing and slicing
- Built-in functions
- Writing custom functions
- Getting at methods
- Iterating with Loops (for and while)
- Working with files
- Software Control Management (SCM) (Git, Github, Bitbucket, Cloudshare, etc.)
- Getting at RESTful interfaces with Python
- Working with JSON
- Python, Ansible and Paramiko
- Using Paramiko to SSH with keys and passwords
Day 02
Python and Network Automation
- RESTful API review
- API keys
- Paramiko Review
- Using Paramiko to SFTP with keys and passwords
- 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
Day 03
Basic Ansible Review
- 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
Day 04
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
- Extending Ansible to support Palo Alto (Optional - Case Study)
- Extending Ansible to support Juniper vendor modules (Optional - Case Study)
- Extending Ansible to support NAPALM (Optional - Case Study)
Day 05
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