In this chapter, we will outline how to automate Cisco IOS-based devices using Ansible. We will explore the different modules available in Ansible to automate configuration and collect network information from Cisco IOS devices. This chapter will be based on the following sample network diagram, and we will walk through how we can implement this network design using Ansible:
The following table outlines the management IP addresses on the Cisco nodes, which Ansible will use to connect to the devices:
Device |
Role |
Vendor |
MGMT Port |
MGMT IP |
access01 |
Access switch |
Cisco IOS 15.1 |
Ethernet0/0 |
172.20.1.18 |
access02 |
Access switch |
Cisco IOS 15.1 |
Ethernet0/0 |
172.20.1.19 |
core01 |
Core switch |
Cisco IOS 15.1 |
Ethernet0/0 |
172.20.1.20 |
core02 |
Core switch |
Cisco IOS 15.1 |
Ethernet0/0 |
172.20.1.21 |
wan01 |
WAN router |
Cisco IOS–XE 16.6.1 |
GigabitEthernet1 |
172.20.1.22 |
wan02 |
WAN router |
Cisco IOS–XE 16.6.1 |
GigabitEthernet1 |
172.20.1.23 |
The main recipes covered in this chapter are as follows:
- Building an Ansible network inventory
- Connecting to Cisco IOS devices
- Configuring basic system information
- Configuring interfaces on IOS devices
- Configuring L2 VLANS on IOS devices
- Configuring trunk and access interfaces
- Configuring interface IP addresses
- Configuring OSPF on IOS devices
- Collecting IOS device facts
- Validating network reachability on IOS devices
- Retrieving operational data from IOS devices
- Validating network states with pyATS and Ansible