COURSE OBJECTIVE:
• Version controlling code with Git
• Open SSH sessions and pass commands to remote servers
• Remotely open CLI to network devices
• Move files via SFTP
• Overview of Ansible modules
• Ansible collections for network automation
• Custom Ansible modules with Python
• Best practices for automating the management and configuration of network devices
TARGET AUDIENCE:
• Network Administrators
• Playbook devs / architects
• Python devs
• Administrators interested in Automation
• Individuals interested in devops, specifically for networking
COURSE PREREQUISITES:
• Recommended Prerequisite: Python Basics (5 days)
• Coding experience in another language serves as an adequate prerequisite
COURSE CONTENT:
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
FOLLOW ON COURSES:
API and API Design with Python
Jenkins Automation Server Essentials