In the previous chapter, we used HashiCorp Packer to create custom Jenkins machine images; in this chapter, we will use those images (figure 5.1) to deploy the machines. To do that, we will write declarative definitions of the Jenkins infrastructure we want to exist and use an automation tool to deploy the resources on the given infrastructure-as-a service (IaaS) provider.
In the past, managing IT infrastructure was a hard job. System administrators had to manually manage and configure all of the hardware and software that was needed for the applications to run. However, in recent years, things have changed dramatically. Trends like cloud computing revolutionized—and improved—the way organizations design, develop, and maintain their IT infrastructure. One of the critical components of this trend is called infrastructure as code.