Network Programmability and Automation Fundamentals, 1st edition

Published by Cisco Press (May 6, 2021) © 2021

  • Khaled Abuelenain
  • Jeff Doyle
  • Anton Karneliuk
  • Vinit Jain Best-selling Cisco Press author, expert trainer, and Cisco Certified Internetwork Expert (No. 22854)
Products list
Products list

Details

  • A print copy
  • Free shipping

Features

  • Program Cisco devices
  • Solve real problems
  • Explore the network programmability stack

Title overview

Modernize and optimize network management with APIs and automation


Legacy network management approaches don't scale adequately and can't be automated well. This guide will help meet tomorrow's challenges by adopting network programmability based on Application Programming Interfaces (APIs). Using these techniques, you can improve efficiency, reliability, and flexibility; simplify implementation of high-value technologies; automate routine administrative and security tasks; and deploy services far more rapidly.


Four expert authors help you transition from a legacy mindset to one based on solving problems with software. They explore today's emerging network programmability and automation ecosystem; introduce each leading programmable interface; and review the protocols, tools, techniques, and technologies that underlie network programmability. You'll master key concepts through hands-on examples you can run using Linux, Python, Cisco DevNet sandboxes, and other easily accessible tools.


This guide is for all network architects, engineers, operations, and software professionals who want to integrate programmability into their networks. It offers valuable background for Cisco DevNet certification—and skills you can use with any platform, whether you have software development experience or not.



  • Master core concepts and explore the network programmability stack
  • Manage network software and run automation scripts in Linux environments
  • Solve real problems with Python and its Napalm and Nornir automation frameworks
  • Make the most of the HTTP protocol, REST architectural framework, and SSH
  • Encode your data with XML, JSON, or YAML
  • Understand and build data models using YANG that offer a foundation for model-based network programming
  • Leverage modern network management protocols, from gRPC and gNMI to NETCONF and RESTCONF
  • Meet stringent service provider KPIs in large-scale, fast-changing networks
  • Program Cisco devices running IOS XE, IOS XR, and NX-OS as well as Meraki, DNA Center, and Webex platforms
  • Program non-Cisco platforms such as Cumulus Linux and Arista EOS
  • Go from “zero to hero” with Ansible network automation
  • Plan your next steps with more advanced tools and technologies

Table of contents

    Introduction xxix

Part I Introduction

Chapter 1 The Network Programmability and Automation Ecosystem 1

    First, a Few Definitions 2

    Your Network Programmability and Automation Toolbox 14

    Software and Network Engineers: The New Era 19

Part II Linux

Chapter 2 Linux Fundamentals 21

    The Story of Linux 21

    The Linux Boot Process 26

    A Linux Command Shell Primer 28

    Finding Help in Linux 31

    Files and Directories in Linux 35

    Input and Output Redirection 57

    Archiving Utilities 67

    Linux System Maintenance 73

    Installing and Maintaining Software on Linux 94

    Summary 118

Chapter 3 Linux Storage, Security, and Networks 119

    Linux Storage 119

    Linux Security 135

    Linux Networking 158

    Summary 181

Chapter 4 Linux Scripting 183

    Regular Expressions and the grep Utility 184

    The AWK Programming Language 193

    The sed Utility 196

    General Structure of Shell Scripts 203

    Output and Input 207

    Variables 215

    Conditional Statements 223

    Loops 232

    The until-do Loop 237

    Functions 238

    Expect 242

    Summary 246

Part III Python

Chapter 5 Python Fundamentals 249

    Scripting Languages Versus Programming Languages 250

    Network Programmability 253

    Computer Science Concepts 255

    Python Fundamentals 260

    Summary 309

    References 310

Chapter 6 Python Applications 311

    Organizing the Development Environment 311

    The virtualenv Tool 331

    Python Modules 333

    Python Applications 336

    Summary 385

Part IV Transport

Chapter 7 HTTP and REST 387

    HTTP Overview 387

    The REST Framework 392

    The HTTP Connection 394

    HTTP Transactions 397

    HTTP Messages 415

    Resource Identification 431

    Postman 436

    HTTP and Bash 447

    HTTP and Python 455

    Summary 467

Chapter 8 Advanced HTTP 469

    HTTP/1.1 Authentication 469

    Transport Layer Security (TLS) and HTTPS 487

    HTTP/2 503

    Summary 508

Chapter 9 SSH 509

    SSH Overview 509

    Setting Up SSH 521

    Enabling SSH on Cisco Devices 526

    Secure File Transfer 540

    Summary 551

    References 551

Part V Encoding

Chapter 10 XML 553

    XML Overview, History, and Usage 553

    XML Syntax and Components 554

    Making XML Valid 562

    Navigating XML Documents 574

    XML Stylesheet Language Transformations (XSLT) 578

    Processing XML Files with Python 580

    Summary 588

Chapter 11 JSON 591

    JavaScript Object Notation (JSON) 591

    JSON Schema Definition (JSD) 595

    Summary 614

Chapter 12 YAML 615

    YAML Structure 616

    Handling YAML Data Using Python 626

    Summary 637

Part VI Modeling

Chapter 13 YANG 639

    A Data Modeling Primer 639

    YANG Data Models 642

    Types of YANG Modules 663

    YANG Tools 673

    Summary 688

Part VII Protocols

Chapter 14 NETCONF and RESTCONF 689

    NETCONF 689

    RESTCONF 739

    Summary 779

Chapter 15 gRPC, Protobuf, and gNMI 781

    Requirements for Efficient Transport 781

    History and Principles of gRPC 782

    gRPC as a Transport 784

    The Protocol Buffers Data Format 786

    Working with gRPC and Protobuf in Python 790

    The gNMI Specification 798

    The Anatomy of gNMI 799

    Managing Network Elements with gNMI/gRPC 814

    Summary 818

Chapter 16 Service Provider Programmability 819

    The SDN Framework for Service Providers 819

    Segment Routing (SR) 823

    BGP Link State (BGP-LS) 843

    Path Computation Element Protocol (PCEP) 859

    Summary 880

Part VIII Programmability Applications

Chapter 17 Programming Cisco Platforms 881

    API Classification 882

    Network Platforms 883

    Meraki 922

    DNA Center 931

    Collaboration Platforms 942

    Summary 954

Chapter 18 Programming Non-Cisco Platforms 957

    General Approaches to Programming Networks 957

    Implementation Examples 962

    Summary 987

Chapter 19 Ansible 989

    Ansible Basics 989

    Extending Ansible Capabilities 1003

    Jinja2 Templates 1034

    Using Ansible for Cisco IOS XE 1055

    Using Ansible for Cisco IOS XR 1073

    Using Ansible for Cisco NX-OS 1084

    Using Ansible in Conjunction with NETCONF 1095

    Summary 1108

Part IX Looking Ahead

Chapter 20 Looking Ahead 1109

    Some Rules of Thumb 1109

    What Does All This Mean for Your Career? 1118



9781587145148, TOC, 4/1/2021


Need help?Get in touch