Summary
In this chapter, we covered provisioners, which are the most powerful features of Packer. The flexibility of provisioners paired with one or more builders lets you apply a little bit of customization across many different images or environments. Packer supports a powerful set of variables during the build that can be used for templating and versioning your environment’s configuration. Error handling can be managed via retries and timeouts for large complex builds. Have a good look at the example code in our GitHub repo and try to experiment with provisioners yourself.
Developing the sample code for these templates rarely goes smoothly without issues. In the next chapter, we will cover tips and tricks for troubleshooting and debugging complex build jobs in a way that simplifies finding build or provisioner errors and how to fix them.