Adding Files to a Packer Build

15 minutes
  • 3 Learning Objectives

About this Hands-on Lab

Packer lets us create machine images for a variety of platforms through code. Part of this involves provisioning an initial machine to match our desired state. In this hand-on lab, we use both the `file` and `shell` provisioners to prepare a Packer template for a web instance.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Add the File Provisioner(s)

Note: There are multiple ways to complete this lab. We’ll be using two file provisioner blocks objects. You could alternatively upload the entire files directory in one object and then move all files via script.

Create an object to move the website files to /var/www/html/bookapp. Place it between the two shell provisioners.

Add a second file object to move the Apache configuration to /tmp/ — since /etc/apache2 requires elevated privileges, we’ll need to move the bookapp.conf file from /tmp/ via shell provisioner.

Update the Scripts

We’ll need to update both the initial inline shell provisioner and the scripts provisioner that follows our file objects.

Update the inline list to create the /var/www/html directory and grant ubuntu temporary ownership of it.

Then, update the script itself to move our bookapp.conf Apache configuration.

Test the Build

Return to the packer.json file and update the variables for access key, secret key, and subnet ID. Save and exit, and then test the build.

Additional Resources

You are building a Packer template to create images that provision a web instance for a new service. You have most of the scripting done and the shell provisioner blocks set in the Packer template, but you need to copy over the related website files and the Apache configuration.

Create one or more file provisioner blocks in the provided Packer template. The template and related files can be found at /home/cloud_user/packer/bookapp.

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?