What is it?
A tool that will take machines running mcollective and a small provisioning agent and bootstrap them through the process of running puppet.
This is still young code and a work in progress.
Each node more or less go through the following steps given the config file:
--- logfile: /var/log/provisioner.log loglevel: debug daemonize: true master: criteria: - ec2_placement_region - country filter: "" agent: puppetca target: filter: "" agent: provision notify: filter: "/monitor1/" targets: - boxcar://firstname.lastname@example.org - gcal://newservers
- Discover all nodes running the 'provision' agent
- Pick the first discovered node and start provisioning
- Find a list of all masters running 'puppetca' agent
- Pick a master based on facts ec2_placement_region and then the country facts. If nothing match, take the first
- Calls the 'set_puppet_host' actions giving it the ip of the chosen master
- Cleans the certificate from all masters matching the identity of the machine being provisioned
- Gets the node to request a new certificate using the 'request_certificate' action
- Signs the certificate on all masters
- Does an initial puppet run with the 'bootstrap_puppet' action
- Does a 2nd puppet run via 'run_puppet' action. This should remove the provision agent from the node
- Notifies my iPhone via boxcar
- Adds a calendar entry to my Google Calendar noting the time when the node was provisioned
To do this we re-use a lot of existing agents:
- Your masters all need the puppetca agent
- Your nodes being provisioned need the provision agent, see agents subdir
- You need to have nagger deployed and the node should run the nagger agent
You need some nagger plugins the boxcar and gcal ones are opensource
The basic flow is probably generic enough for most bootstrapping scenarios, cloud or non cloud, the specifics of the process should be captured in your agent. There's a sample agent in the agent subdir