As hinted at the end of the previous chapter, there is some more work to be done before we can claim to have fully implemented IaC.
The first step was to describe the hardware side of our infrastructure in code; now it is time to look at the software or configuration aspect of it.
Let us say we have provisioned a few EC2 nodes and would like to have certain packages installed on them, and relevant configuration files updated. Prior to Configuration Management (CM) tools gaining popularity, such tasks would have been performed manually by an engineer either following a checklist, running a collection of shell scripts, or both. As you can imagine, such methods do not scale well as they generally imply one engineer setting up one server at a time.
In addition, checklists or scripts:
Are hard to write when it comes to configuring a host plus a full application stack running on it
Are usually targeted at a given host or application...