Book Image

Go for DevOps

By : John Doak, David Justice
5 (1)
Book Image

Go for DevOps

5 (1)
By: John Doak, David Justice

Overview of this book

Go is the go-to language for DevOps libraries and services, and without it, achieving fast and safe automation is a challenge. With the help of Go for DevOps, you'll learn how to deliver services with ease and safety, becoming a better DevOps engineer in the process. Some of the key things this book will teach you are how to write Go software to automate configuration management, update remote machines, author custom automation in GitHub Actions, and interact with Kubernetes. As you advance through the chapters, you'll explore how to automate the cloud using software development kits (SDKs), extend HashiCorp's Terraform and Packer using Go, develop your own DevOps services with gRPC and REST, design system agents, and build robust workflow systems. By the end of this Go for DevOps book, you'll understand how to apply development principles to automate operations and provide operational insights using Go, which will allow you to react quickly to resolve system failures before your customers realize something has gone wrong.
Table of Contents (21 chapters)
1
Section 1: Getting Up and Running with Go
10
Section 2: Instrumenting, Observing, and Responding
14
Section 3: Cloud ready Go

Using SSH in Go to automate remote changes

SSH is simply a network protocol that can be used to secure communication between two hosts.

While most people think that the ssh binary allows you to connect from a terminal on one host to a terminal on another host, that is only one use. SSH can be used to secure connections for services such as Google Remote Procedure Call (gRPC) or to tunnel graphical interfaces such as the X Window System (X11).

In this section, we will talk about how you can use the SSH package (https://pkg.go.dev/golang.org/x/crypto/ssh) for creating clients and servers.

Connecting to another system

The most basic use of SSH is to connect to another system and either send a single command or invoke a shell and issue commands. SSH is simply a transport mechanism, so there are many other uses of SSH such as connection tunneling or wrapping remote procedure calls (RPCs). We will not cover those here, as they are outside the use cases for general DevOps work...