Puppet & Puppetmaster for development on VMs

Solution 1:

Since the VMs are for development purposes, you may want to look at Vagrant. Vagrant has support for Puppet out-of-the-box.

Solution 2:

Setup your VMs to be provisioned via DHCP and add to your config (you can give your VMs random or sequential names if you want, but keep the domain part to ease deploying):

option domain-name "my.domain.com";

Set your puppetmaster to provide the modules you want:

node /.*my.domain.com/ inherits default {
}

And enable autosign for that domain:

$ cat autosign.conf 
# Domains you want SSL certificates autosigned for
#*.my.domain.com

And regarding "adding a change across a lot of vms", well, that is what puppet is for. If you want/need other kind of on-demand operation, take a look at Marionette Collective.

Solution 3:

puppet can work in a client/server way, but it's not mandatory. You can call puppet locally for the current machine, it's far simpler (but less scalable of course)

In my case, when firing up a new VM, I just copy the puppet full config with sftp (ssh) and call puppet locally. Instructions here (fr) http://offirmo.net/wiki/index.php?title=Amor%C3%A7age_d%27un_serveur_Ubuntu_avec_puppet

cd ~/puppet
sudo puppet apply --debug --detailed-exitcodes --verbose manifests/site.pp --modulepath=modules --ignorecache --no-usecacheonfailure

If I need updates, my puppet config is in a git repo (https://github.com/Offirmo/offirmo-puppet) and I can just get the latest one with git pull and apply again.

Up to you to judge if this method is better in your case.