Network Automation with Go Learn How to Automate Network Operations and Build Applications Using the Go Programming Language
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 automatio...
Autor principal: | |
---|---|
Otros Autores: | |
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing, Limited
2023.
|
Edición: | 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009825913006719 |
Tabla de Contenidos:
- 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
- Technical requirements
- 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
- Summary
- Further reading
- Chapter 3: Getting Started with Go
- Technical requirements
- 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
- Concurrency
- Goroutines
- Channels
- Channels and Timers
- Shared data access
- Concurrency caveats
- Summary
- Further reading
- 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)
- Summary
- Further reading
- Part 2: Common Tools and Frameworks
- Chapter 5: Network Automation
- Technical requirements
- 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
- Summary
- Further reading
- Chapter 6: Configuration Management
- Technical requirements
- 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
- Summary
- Further reading
- Chapter 7: Automation Frameworks
- Technical requirements
- 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
- Summary
- Further reading
- 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
- Device configuration
- RESTCONF
- Code generation
- Building configuration
- Device configuration
- State validation
- 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
- Summary
- Further reading
- Chapter 9: OpenConfig
- Technical requirements
- 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
- Summary
- Further reading
- Chapter 10: Network Monitoring
- Technical requirements
- 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
- Summary
- Further reading
- 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
- Further reading
- 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
- Further reading
- Index
- Other Books You May Enjoy.