Muutke küpsiste eelistusi

Network Programmability and Automation: Skills for the Next-Generation Network Engineer [Pehme köide]

  • Formaat: Paperback / softback, 580 pages, kõrgus x laius x paksus: 250x150x15 mm, kaal: 666 g
  • Ilmumisaeg: 31-Mar-2018
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1491931256
  • ISBN-13: 9781491931257
  • Pehme köide
  • Hind: 63,99 €*
  • * saadame teile pakkumise kasutatud raamatule, mille hind võib erineda kodulehel olevast hinnast
  • See raamat on trükist otsas, kuid me saadame teile pakkumise kasutatud raamatule.
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 580 pages, kõrgus x laius x paksus: 250x150x15 mm, kaal: 666 g
  • Ilmumisaeg: 31-Mar-2018
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1491931256
  • ISBN-13: 9781491931257
Like sysadmins before them, network engineers are finding that they cannot do their work manually anymore. As the field faces new protocols, technologies, delivery models, and a pressing need for businesses to be more agile and flexible, network automation is becoming essential. This practical guide shows network engineers how to use a range of technologies and tools-including Linux, Python, JSON, and XML-to automate their systems through code.

Network programming and automation will help you simplify tasks involved in configuring, managing, and operating network equipment, topologies, services, and connectivity. Through the course of the book, you'll learn the basic skills and tools you need to make this critical transition.

This book covers:

Python programming basics: data types, conditionals, loops, functions, classes, and modules Linux fundamentals to provide the foundation you need on your network automation journey Data formats and models: JSON, XML, YAML, and YANG for networking Jinja templating and its applicability for creating network device configurations The role of application programming interfaces (APIs) in network automation Source control with Git to manage code changes during the automation process

How Ansible, Salt, and StackStorm open source automation tools can be used to automate network devices Key tools and technologies required for a Continuous Integration (CI) pipeline in network operations
Preface xiii
1 Network Industry Trends 1(18)
The Rise of Software Defined Networking
1(15)
OpenFlow
1(4)
What Is Software Defined Networking?
5(11)
Summary
16(3)
2 Network Automation 19(18)
Why Network Automation?
20(2)
Simplified Architectures
20(1)
Deterministic Outcomes
21(1)
Business Agility
21(1)
Types of Network Automation
22(8)
Device Provisioning
22(3)
Data Collection
25(1)
Migrations
26(1)
Configuration Management
27(1)
Compliance
27(1)
Reporting
28(1)
Troubleshooting
28(2)
Evolving the Management Plane from SNMP to Device APIs
30(5)
Application Programming Interfaces (APIs)
30(4)
Impact of Open Networking
34(1)
Network Automation in the SDN Era
35(1)
Summary
35(2)
3 Linux 37(50)
Examining Linux in a Network Automation Context
37(1)
A Brief History of Linux
38(1)
Linux Distributions
39(3)
Red Hat Enterprise Linux, Fedora, and CentOS
39(2)
Debian, Ubuntu, and Other Derivatives
41(1)
Other Linux Distributions
42(1)
Interacting with Linux
42(20)
Navigating the Filesystem
43(5)
Manipulating Files and Directories
48(6)
Running Programs
54(3)
Working with Daemons
57(5)
Networking in Linux
62(23)
Working with Interfaces
62(11)
Routing as an End Host
73(4)
Routing as a Router
77(2)
Bridging (Switching)
79(6)
Summary
85(2)
4 Learning Python in a Network Context 87(66)
Should Network Engineers Learn to Code?
88(2)
Using the Python Interactive Interpreter
90(2)
Understanding Python Data Types
92(27)
Learning to Use Strings
93(9)
Learning to Use Numbers
102(2)
Learning to Use Booleans
104(3)
Learning to Use Python Lists
107(6)
Learning to Use Python Dictionaries
113(4)
Learning About Python Sets and Tuples
117(2)
Adding Conditional Logic to Your Code
119(2)
Understanding Containment
121(2)
Using Loops in Python
123(5)
Understanding the while Loop
123(1)
Understanding the for Loop
124(4)
Using Python Functions
128(3)
Working with Files
131(5)
Reading from a File
132(2)
Writing to a File
134(2)
Creating Python Programs
136(4)
Creating a Basic Python Script
136(1)
Understanding the Shebang
137(2)
Migrating Code from the Python Interpreter to a Python Script
139(1)
Working with Python Modules
140(2)
Passing Arguments into a Python Script
142(1)
Using pip and Installing Python Packages
143(2)
Learning Additional Tips, Tricks, and General Information When Using Python
145(6)
Summary
151(2)
5 Data Formats and Data Models 153(26)
Introduction to Data Formats
153(3)
Types of Data
155(1)
YAML
156(6)
Reviewing YAML Basics
157(3)
Working with YAML in Python
160(1)
Data Models in YAML
161(1)
XML
162(7)
Reviewing XML Basics
162(1)
Using XML Schema Definition (XSD) for Data Models
163(2)
Transforming XML with XSLT
165(4)
Searching XML Using XQuery
169(1)
JSON
169(5)
Reviewing JSON Basics
169(3)
Working with JSON in Python
172(1)
Using JSON Schema for Data Models
173(1)
Data Models Using YANG
174(4)
YANG Overview
174(1)
Taking a Deeper Dive into YANG
175(3)
Summary
178(1)
6 Network Configuration Templates 179(22)
The Rise of Modern Template Languages
180(2)
Using Templates for Web Development
181(1)
Expanding On the Use of Templates
182(1)
The Value of Templates in Network Automation
182(1)
Jinja for Network Configuration Templates
183(15)
Why Jinja?
183(1)
Dynamically Inserting Data into a Basic Jinja Template
184(1)
Rendering a Jinja Template File in Python
185(2)
Conditionals and Loops
187(6)
Jinja Filters
193(4)
Template Inheritance in Jinja
197(1)
Variable Creation in Jinja
198(1)
Summary
198(3)
7 Working with Network APIs 201(92)
Understanding Network APIs
202(13)
Getting Familiar with HTTP-Based APIs
202(4)
Diving into NETCONF
206(9)
Exploring Network APIs
215(16)
Exploring HTTP-Based APIs
215(7)
Exploring NETCONF
222(9)
Automating Using Network APIs
231(60)
Using the Python requests Library
232(29)
Using the Python ncclient Library
261(25)
Using netmiko
286(5)
Summary
291(2)
8 Source Control with Git 293(66)
Use Cases for Source Control
293(1)
Benefits of Source Control
294(1)
Change Tracking
294(1)
Accountability
294(1)
Process and Workflow
295(1)
Benefits of Source Control for Networking
295(1)
Enter Git
296(3)
Brief History of Git
296(1)
Git Terminology
297(1)
Overview of Git's Architecture
298(1)
Working with Git
299(24)
Installing Git
299(1)
Creating a Repository
299(1)
Adding Files to a Repository
300(2)
Committing Changes to a Repository
302(3)
Changing and Committing Tracked Files
305(3)
Unstaging Files
308(3)
Excluding Files from a Repository
311(4)
Viewing More Information About a Repository
315(4)
Distilling Differences Between Versions of Files
319(4)
Branching in Git
323(13)
Creating a Branch
328(1)
Checking Out a Branch
329(2)
Merging and Deleting Branches
331(5)
Collaborating with Git
336(21)
Collaborating Between Multiple Systems Running Git
336(17)
Collaborating Using Git-Based Online Services
353(4)
Summary
357(2)
9 Automation Tools 359(100)
Reviewing Automation Tools
359(2)
Using Ansible
361(37)
Understanding How Ansible Works
362(1)
Constructing an Inventory File
363(7)
Executing an Ansible Playbook
370(5)
Using Variable Files
375(2)
Writing Ansible Playbooks for Network Automation
377(18)
Using Third-Party Ansible Modules
395(3)
Ansible Summary
398(1)
Automating with Salt
398(40)
Understanding the Salt Architecture
399(3)
Getting Familiar with Salt
402(16)
Managing Network Configurations with Salt
418(9)
Executing Salt Functions Remotely
427(2)
Diving into Salt's Event-Driven Infrastructure
429(6)
Diving into Salt a Bit Further
435(3)
Salt Summary
438(1)
Event-Driven Network Automation with StackStorm
438(19)
StackStorm Concepts
439(2)
StackStorm Architecture
441(1)
Actions and Workflows
442(10)
Sensors and Triggers
452(2)
Rules
454(3)
StackStorm Summary
457(1)
Summary
457(2)
10 Continuous Integration 459(30)
Important Prerequisites
461(1)
Simple Is Better
461(1)
People, Process, and Technology
462(1)
Learn to Code
462(1)
Introduction to Continuous Integration
462(7)
Basics of Continuous Integration
463(2)
Continuous Delivery
465(1)
Test-Driven Development
466(2)
Why Continuous Integration for Networking?
468(1)
A Continuous Integration Pipeline for Networking
469(19)
Peer Review
470(6)
Build Automation
476(5)
Test/Dev/Staging Environment
481(3)
Deployment Tools
484(2)
Testing Tools and Test-Driven Network Automation
486(2)
Summary
488(1)
11 Building a Culture for Network Automation 489(12)
Organizational Strategy and Flexibility
490(4)
Transforming an Old-World Organization
490(1)
The Importance of Executive Buy-in
491(1)
Build Versus Buy
492(2)
Embracing Failure
494(1)
Skills and Education
495(3)
Learn What You Don't Know
495(1)
Focus on Fundamentals
496(1)
Certifications?
497(1)
Won't Automation Take My Job?!
498(1)
Summary
498(3)
A Advanced Networking in Linux 501(32)
B Using NAPALM 533(16)
Index 549
Jason Edelman, CCIE 15394 & VCDX-NV 167, runs a boutique consulting and integration company, Network to Code, bridging the gap between network engineering and DevOps. He's actively helping vendors and end users develop software and solutions to reduce the inefficiencies in managing IT infrastructure. Jason also writes regularly on his personal blog at jedelman.com and can be found on Twitter at @jedelman8. Scott Lowe works as an engineering architect for VMware, Inc. He focuses on cloud computing and network virtualization, after having spent a number of years specializing in compute virtualization. Scott's the author of several technical books on topics like VMware vSphere and OpenStack. Matt Oswalt is a Network Software Developer, currently focusing on the intersection of software development and network infrastructure. He publishes his work in this area and more at keepingitclassless.net, and on Twitter as @Mierdin.