Provisioning a Packer Image with Masterless Salt

30 minutes
  • 3 Learning Objectives

About this Hands-on Lab

Packer lets us create machine images for a variety of platforms through code. Part of the image creation process involves provisioning the machine, which can be done with a variety of provisioners, including Salt. All Salt provisioning is done via the `salt-call` command, with Salt run masterless. In this lab, we’ll use Salt and Packer to ensure our website has a working image by using a custom Salt minion config.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Prepare the Formula
  1. Move to packer/bookapp.
  2. Create a formula directory and pull in our desired Apache formula.
  3. To use this formula, we need a related top.sls file, place to store our pillar data, and a pillar top.sls file.
  4. Create the pillar data. (We can view an example of this on the Apache formula’s GitHub page to see usage before writing our own.)
  5. Add a related top.sls file for the pillar data.
  6. Update the formula top file.
  7. Review and update the minion config.
Update the Template
  1. Update our packer.json file, first by adding our file and pillar roots directories in our shell provisioner block; we also want to create our website directory.
  2. Copy over our needed files.
  3. Add our Salt provisioner, ensuring to use our custom minion config.
Test the Build
  1. Update the file with the access key, secret key, and subnet ID provided on the hands-on lab page.
  2. Save and exit the file.
  3. Test the build.

Additional Resources

You have been tasked with building a Packer template for a new project. The resulting image build needs to provision an image that will host a website on an Ubuntu 20.04 server. You wish to leverage existing SaltStack formulas to provision this website, as well as provide custom pillar data and upload the provided website.

A basic template that can provision an Ubuntu 20.04 server on AWS has been provided in the /home/cloud_user/packer/bookapp directory.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?