You are previewing Network Programmability and Automation.
O'Reilly logo
Network Programmability and Automation

Book Description

Automation is the new skillset that network engineers need to pick up. Much like sysadmins have had to learn how to use new tools like Chef and Puppet, network engineers are learning that they just can't do things manually anymore. With examples in each chapter, this practical book provides you with baseline skills in network programmability and automation, using a range of technologies including Linux, Python, JSON, and XML. No previous knowledge of software development, programming, automation, or DevOps is required.

Table of Contents

  1. 1. Preface
    1. What This Book Covers
    2. How This Book is Organized
    3. Who Should Read This Book
      1. Network Engineers
      2. Systems Administrators
      3. Software Developers
    4. Tools Used in this Book
    5. Online Resources
    6. Conventions Used in This Book
    7. Using Code Examples
    8. SafariĀ® Books Online
    9. How to Contact Us
    10. Acknowledgments
  2. 2. Software Defined Networking
    1. The Rise of Software Defined Networking
      1. OpenFlow
      2. What is Software Defined Networking?
    2. Summary
  3. 3. Network Automation
    1. Why Network Automation?
      1. Simplified Architectures
      2. Deterministic Outcomes
      3. Business Agility
    2. Types of Network Automation
      1. Device Provisioning
      2. Data Collection
      3. Migrations
      4. Configuration Management
      5. Compliance
      6. Reporting
      7. Troubleshooting
    3. Evolving the Management Plane from SNMP to Device APIs
      1. Application Programming Interfaces (APIs)
      2. Impact of Open Networking
    4. Network Automation in the SDN Era
    5. Summary
  4. 4. Linux
    1. Linux in a Network Automation Context
    2. A Brief History of Linux
    3. Linux Distributions
      1. Red Hat Enterprise Linux, Fedora, and CentOS
      2. Debian, Ubuntu, and Other Derivatives
      3. Other Linux Distributions
    4. Interacting with Linux
      1. Navigating the File System
      2. Manipulating Files and Directories
      3. Running Programs
      4. Working with Daemons
      5. Working with Background Services in Ubuntu Linux 14.04 LTS
    5. Networking in Linux
      1. Working with Interfaces
      2. Routing as an End Host
      3. Routing as a Router
      4. Bridging (Switching)
    6. Advanced Networking in Linux
      1. Using VLAN Interfaces
      2. Using macvlan Interfaces
      3. Networking Virtual Machines
      4. Working with Network Namespaces
      5. Networking Linux Containers
      6. Using Open vSwitch (OVS)
    7. Summary
  5. 5. Python
    1. Should Network Engineers Learn to Code?
    2. Python Interactive Interpreter
    3. Data Types
      1. Strings
  6. 6. Data Formats
    1. Introduction to Data Formats
      1. Types of Data
    2. YAML
      1. What is YAML?
    3. XML
      1. What is XML?
      2. XML Basics
      3. XML Schema Definition (XSD)
      4. Transforming XML with XSLT
      5. XQuery
    4. JSON
      1. What is JSON?
      2. JSON Basics
      3. Working with JSON in a Language
      4. JSON Schema
  7. 7. Network Configuration Templates
    1. The Rise of Modern Template Languages
    2. The Value of Templates in Network Automation
    3. Jinja2 for Network Configuration Templates
      1. Why Jinja2?
      2. Dynamically Inserting Data Into a Basic Jinja2 Template
      3. Rendering a Jinja2 Template file in Python
      4. Conditionals and Loops
      5. Jinja2 Filters
      6. Template Inheritance in Jinja2
      7. Variable Creation in Jinja2
    4. Key Takeaways for Writing Templates
  8. 8. Continuous Integration
    1. Important Pre-Requisites
      1. Simple is Better
      2. People, Process, and Technology
      3. Learn to Code
    2. Introduction to Continuous Integration
      1. Basics of Continuous Integration
      2. Continuous Delivery
      3. Test-Driven Development
      4. Why Continuous Integration for Networking?
    3. A Continuous Integration Pipeline for Networking
      1. Peer Review
      2. Build Automation
      3. Test/Dev/Staging Environment
      4. Deployment Tools
      5. Testing Tools and Test-Driven Network Automation
    4. Conclusion