Puppet can now be used to define not only the configuration of machines, but also the machines themselves and entire collections of machines when using CloudStack. New Puppet types and providers allow defining CloudStack instances, groups of instances, and entire application stacks that can then be deployed on CloudStack. This brings infrastructure as code to a new level by allowing Puppet to define and manage the entire CloudStack infrastructure.