My Account Log in

1 option

Network automation with go : learn how to automate network operations and build applications using the go programming language / Nicolas Leiva and Michael Kashin.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Leiva, Nicolas, author.
Kashin, Michael, author.
Language:
English
Subjects (All):
Go (Computer program language).
Computer networks.
Physical Description:
1 online resource (443 pages)
Edition:
First edition.
Place of Publication:
Birmingham, England : Packt Publishing Ltd., [2022]
Biography/History:
Leiva Nicolas: Nicolas is a Specialist Solutions Architect at Red Hat. In his role, he helps customers of all sizes to automate the provisioning and operation of IT infrastructure, services, and applications. Prior to that, he worked in the networking industry for 15 years, becoming a Cisco Certified Design Expert (CCDE) and Internetwork Expert (CCIE). He is passionate about writing open-source software in Go with a keen interest in cloud technologies. Kashin Michael: Michael is a Cloud Infrastructure Solutions Architect, currently working in the networking business unit of NVIDIA. Throughout his career, he held multiple roles ranging from network operations, through software development to systems architecture and design. He enjoys breaking the boundaries between different disciplines to come up with creative solutions and help customers solve their problems in the most optimal way. He is a prolific open-source contributor and writer with much of his work focused on cloud-native infrastructure, automation, and orchestration.
Summary:
Understand the world of modern network automation with Go and deepen your knowledge with insights from 10+ experts who have real-world hands-on experience with network automation and/or are using Go for network-related tasks Key Features A comprehensive guide to the world of modern network automation Use Go to build anything from repetitive task automation to complex distributed systems Over 30 practical, ready-to-use sample programs Book Description Go's built-in first-class concurrency mechanisms make it an ideal choice for long-lived low-bandwidth I/O operations, which are typical requirements of network automation and network operations applications. This book provides a quick overview of Go and hands-on examples within it to help you become proficient with Go for network automation. It's a practical guide that will teach you how to automate common network operations and build systems using Go. The first part takes you through a general overview, use cases, strengths, and inherent weaknesses of Go to prepare you for a deeper dive into network automation, which is heavily reliant on understanding this programming language. You'll explore the common network automation areas and challenges, what language features you can use in each of those areas, and the common software tools and packages. To help deepen your understanding, you'll also work through real-world network automation problems and apply hands-on solutions to them. By the end of this book, you'll be well-versed with Go and have a solid grasp on network automation. What you will learn Understand Go programming language basics via network-related examples Find out what features make Go a powerful alternative for network automation Explore network automation goals, benefits, and common use cases Discover how to interact with network devices using a variety of technologies Integrate Go programs into an automation framework Take advantage of the OpenConfig ecosystem with Go Build distributed and scalable systems for network observability Who this book is for This book is for all network engineers, administrators, and other network practitioners looking to understand what network automation is and how the Go programming language can help develop network automation solutions. As the first part of the book offers a comprehensive overview of Go's main features, this book is suitable for beginners with a solid grasp on programming basics.
Contents:
Cover
Title Page
Copyright and Credits
Contributors
Table of Contents
Preface
Part 1: The Go Programming Language
Chapter 1: Introduction
Technical requirements
Networking and Go
Why Go?
Non-technical reasons
The future of Go
Technical reasons
Go for networking
Go versus Python
Code execution
Type system
Performance
Ease of use
Memory management
Syntax
Failure handling
Concurrency
Community
Installing Go on your computer
Windows
Mac
Linux
Summary
Further reading
Chapter 2: Go Basics
What is Go?
Go Proverbs
Go source code files
Packages
Go modules
Importing packages
Comments
Names
Executing your Go code
Running Go programs online
The Go Playground
The Go Play Space
A look into the Future
The Go tool
Build
Run
Mod
Get
Install
Fmt
Test
Env
Chapter 3: Getting Started with Go
Go's type system
Basic types
Container types
User-defined types
Arithmetic, comparison, and logical operators
Arithmetic operators
Logical operators
Comparison operators
Control flow
for loops
Conditional statements
goto statements
Functions
Function arguments
Error handling
Methods
Variadic functions
Closures
Defer
Interfaces
Network automation example
Standard library example
Interfaces as contracts
Input and output operations
The io.Reader interface
The io.Writer interface
The io.Copy function
Composition
Decoding and encoding
Decoding
Encoding
Goroutines
Channels
Channels and Timers
Shared data access
Concurrency caveats
Chapter 4: Networking (TCP/IP) with Go.
Technical requirements
The link layer
Network interfaces
Ethernet
The internet layer
The net package
The New netip package
Working with IP addresses
Route lookups
The transport layer
UDP ping application
The application layer
Working with an HTTP client
Working with an HTTP (server)
Part 2: Common Tools and Frameworks
Chapter 5: Network Automation
What is network automation?
Why network automation exists
Bottom-up view
Top-down view
Automating network operation tasks
Configuration management
Network state analysis
Network audits and reporting
Systems approach
Closed-loop automation
Demo application
Chapter 6: Configuration Management
Environment setup
Creating the topology
Interacting with network devices via SSH
Describing the network device configurations
Using Go's SSH package to access network devices
Automating routine SSH tasks
Interacting with network devices via HTTP
Using Go's HTTP package to access network devices
Getting config inputs from other systems via HTTP
State validation
Checking routing information
Validating end-to-end reachability
Chapter 7: Automation Frameworks
Ansible
Overview of Ansible components
Working with Ansible modules
Developing an Ansible module
Running the playbook
Terraform
Overview of Terraform components
Working with Terraform
Developing a Terraform provider
Networking providers
Other automation frameworks
Gornir
Consul-Terraform-Sync
mgmt
Looking into the future
Part 3: Interacting with APIs
Chapter 8: Network APIs
Technical requirements.
API data modeling
OpenAPI
Data modeling
Data input
Device configuration
JSON-RPC
Code generation
Building configuration
RESTCONF
Operational state modeling
Operational state processing
gRPC
Protobuf
gRPC transport
Defining gRPC services
Configuring network devices with gRPC
Streaming telemetry from a network device with gRPC
Chapter 9: OpenConfig
Device provisioning
Set RPC
Using gNMI to configure network interfaces
Streaming telemetry
Subscribe RPC
Streaming telemetry processing pipelines with gNMI
Event-manager sample program
Visualizing the data
Network operations
Traceroute RPC
Path verifier application
Chapter 10: Network Monitoring
Data plane telemetry processing
Packet capturing
Packet filtering
Packet processing
Generating traffic
Debugging Go programs
Debugging from an IDE
Data plane telemetry aggregation
Top talkers
Testing Go programs
Measuring control plane performance
Measuring BGP Update propagation time
Event-driven BGP state machine
Encoding and decoding BGP messages
Collecting and exposing metrics
Storing and visualizing metrics
Developing distributed applications
Chapter 11: Expert Insights
David Barroso
Stuart Clark
Claudia de Luna
Alexis de Talhouët
John Doak
Roman Dodin
David Gee
Daniel Hertzberg
Marcus Hines
Sneha Inguva
Antonio Ojea
Carl Montanari
Brent Salisbury
Maximilian Wilhelm
Matt Oswalt
Appendix : Building a Testing Environment
What is a testing environment?.
Step 1 - building a testing environment
Step 2 - uploading container images
Step 3 - iInteracting with the testing environment
Launching a virtual network topology
Connecting to the devices
Destroying the network topology
Step 4 - cleaning up of the cloud-hosted environment
Index
Other Books You May Enjoy.
Notes:
Description based on publisher supplied metadata and other sources.
Description based on print version record.
ISBN:
9781800561014
1800561016
OCLC:
1354874084

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account