Automatically generating AMIs with Puppet