Validating Images With Goss

Understand how to validate images with Goss using spec files and Packer provisioners.

Goss is a tool for checking server configurations using a spec file written in YAML. This way, we can test that the server is working as expected. This can be from testing access to the server over SSH using expected keys to validating that various processes are running.

Not only can Goss test our server for compliance, but it can be integrated with Packer. That way, we can test that our server is running as expected during the provisioning step and before deployment.

Let's have a look at making a Goss spec file.

Creating a spec file

A spec file is a set of instructions that tells Goss what to test for.

There are a couple of ways to make a spec file for Goss. The spec file is used by Goss to understand what it needs to test.

While we could write it by hand, the most efficient way is to use one of two Goss commands:

  • goss add

  • goss autoadd

The most efficient way to use Goss is to launch a machine with our custom AMI, log in using the ubuntu user, and use autoadd to generate the YAML file.

Once logged onto our AMI instance, let's run the following:

Get hands-on with 1200+ tech skills courses.