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.
- 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.