Book Image

Network Automation Cookbook

By : Karim Okasha
Book Image

Network Automation Cookbook

By: Karim Okasha

Overview of this book

Network Automation Cookbook is designed to help system administrators, network engineers, and infrastructure automation engineers to centrally manage switches, routers, and other devices in their organization's network. This book will help you gain hands-on experience in automating enterprise networks and take you through core network automation techniques using the latest version of Ansible and Python. With the help of practical recipes, you'll learn how to build a network infrastructure that can be easily managed and updated as it scales through a large number of devices. You'll also cover topics related to security automation and get to grips with essential techniques to maintain network robustness. As you make progress, the book will show you how to automate networks on public cloud providers such as AWS, Google Cloud Platform, and Azure. Finally, you will get up and running with Ansible 2.9 and discover troubleshooting techniques and network automation best practices. By the end of this book, you'll be able to use Ansible to automate modern network devices and integrate third-party tools such as NAPALM, NetBox, and Batfish easily to build robust network automation solutions.
Table of Contents (15 chapters)

Building an Ansible network inventory

In this recipe, we will outline how to build and structure our Ansible inventory to describe our sample service provider network setup outlined in this chapter. Building an Ansible inventory is a mandatory step, in order to tell Ansible how to connect to the managed devices. In the case of NAPALM, we need to sort the different nodes in our network into the correct vendor types supported by NAPALM.

How to do it...

  1. Inside the new folder (ch6_napalm), we create a hosts file with the following content:
$ cat hosts
[pe]
mxpe01 ansible_host=172.20.1.3
mxpe02 ansible_host=172.20.1.4
xrpe03 ansible_host=172.20.1.5

[p]
mxp01 ansible_host=172.20.1.2
mxp02 ansible_host=172.20.1.6

[junos]
mxpe01
mxpe02...