We need to get a bit more technical in order to understand what cloud-init is and to understand what its limitations are. Since we are talking about a way to fully automatically reconfigure a system using simple configuration files, it means that some things need to be prepared in advance to make this complex process user friendly.
We already mentioned virtual machine templates in Chapter 8, Creating and Modifying VM Disks, Templates, and Snapshots. Here, we are talking about a specially configured template that has all the elements needed to read, understand, and deploy the configuration that we are going to provide in our files. This means that this particular image has to be prepared in advance, and is the most complicated part of the whole system.
Luckily, cloud-init images can be downloaded already pre-configured, and the only thing that we need to know is which distribution we want to use. All the distributions we have mentioned throughout this...