tree: 4bb9b4c325f61b5c12c509d3e50e59c009e268e8 [path history] [tgz]
  1. provision/
  2. templates/
  3. README.md
  4. requirements.yaml
packer/README.md

CI Packer

Packer is a tool for automatically creating VM and container images, configuring them and post-processing them into standard output formats.

Building

You'll need to install Packer, of course.

The Packer configuration is divided into build-specific variables, output-specific templates and a set of shared provisioning scripts. To do a specific build, combine the template for the desired output artifact type with a variable file. To build a new basebuild instance the following would be done:

packer build -var-file=vars/cloud-env.json -var-file=vars/centos.json templates/basebuild.json

NOTE: vars/cloud-env.json is a gitignored file as it contains private information. There is a vars/cloud-env.json.example file that may be used as a base for creating the one needed.

This would build a bootable image in the project's CI cloud environment.

From a high level, the builds:

  • Boot a specified base image in the cloud
  • Run a set of shell scripts, listed in the template's shell provisioner section, to do any configuration required by the builder.
  • Execute a shutdown of the running instance
  • Execute a 'nova image-create' operation against the shutdown instance.
  • Perform a 'nova delete' operation against the shutdown instance.