I'm also using cloud-init to pre-configure puppet agent on the machines I'm deploying to talk to the master we have. But yeah, there's the whole discussion about configuration management vs "immutable infrastructure", where if you want to do a change, you build new images with that change, deploy the new ones and destroy the old ones. And yes, "configuration management" may be used as one of the tools to ensure the contents of those images match what you want.