| Course objectives After taking this training, you should be able to: 
Articulate the role network automation and programmability play in the context of end-to-end network management and operationsDefine and differentiate between waterfall and agile software development methodologiesInterpret and troubleshoot Python scripts with fundamental programming constructs built for network automation use casesDescribe how DevOps principles, tools, and pipelines can be applied to network operationsUnderstand the role of network automation development environments and associated technologies such as Python virtual environments, Vagrant, and DockerUnderstand and construct HTTP-based API calls to network devicesArticulate the differences among and common use cases for XML, JSON, YAML, and protobufConstruct and interpret Python scripts using the Python requests module to automate devices that have HTTP-based APIsUnderstand the role YANG plays in network automationUnderstand that a number of tools exist to simplify working with YANG modelsDescribe the functionality of RESTCONF and NETCONF and the differences between themConstruct Ansible playbooks to configure network devices and retrieve operational state data from themBuild Jinja2 templates and YAML data structures to generate desired state configurations 
| Lab outline 
Use Network Automation ScriptsEnforce Python Fundamentals on the Interactive InterpreterAutomate Networks with NetmikoUse the Git Version-Control System and Collaborate on an Internal ProjectBuild Reproduceable Automation EnvironmentsUse HTTP-Based APIs with PostmanExplore YAML and JSON DataConsume HTTP-Based APIs with Python RequestsExplore YANG ToolsExplore RESTCONF with PythonExplore NETCONF with PythonConfigure Network Devices with AnsibleCollect Network Data with AnsibleBuild and Deploy Configurations with Ansible |  |