Adam Clark wrote:
HI Eric,
Thanks for the reply. I'm using PE 3.3.1 with naive autosigning which works well, I just assume policy based was working too.
I'm new to Puppet and just doing some proof of concept work.

One thing I haven't got a good grip on is when does facter go out and gather the facts? Can it gather them independently of or puppet agent being run? Are they available before puppet agent is run for the first time? I can't really answer this question as puppet is always run as part of the install script.

Puppet runs facter after it pluginsyncs but before it requests the catalog from the master. It doesn't execute /usr/bin/facter directly but rather uses facter as a library, so puppet can't easily use a pre-existing cache of facts. Because custom facts could be pluginsync'ed, to get the same behavior without actually running the agent you'd need to run "puppet plugin download" then "facter -p" (both as root) so it uses the correct config file and directories.


What I would like to do is this:
* Create a website in which takes request that have a vmware uuid (or ec2 instance id) and certname and returns a csr_attributes.yaml file with an autogenerated PSK * the website stores all of this in a DB with a timestamp so I can age them out. * Create an autosign script that validates a CSR against the DB and the cloud provider

This should be totally doable and indeed is exactly the kind of thing I was hoping to see happen with the autosign policy + cert attributes. Sounds like an awesome PuppetConf talk in the making, actually :-D

Let me restate your requirements for that web service a bit, to make sure I understand -- this is the part that's probably the most complicated. It would...

- provide an endpoint that accepts requests for attributes from unknown IPs who provide a uuid - match the uuid against the cloud service api to determine whether a psk should be issued - if it should, generate + store a timestamped [uuid,psk] tuple and return a valid csr_attributes.yaml

- provide a second endpoint whose access is restricted to just your puppetmasters - take requests that present a [uuid,psk] tuple, and check whether there's a matching record *
- if yes, delete the record and reply affirmative to the autosign request

* does this step really also need to call out to the cloud service API? Vsphere at least is pretty slow/expensive in my experience, and if there's a valid record in the DB it should be safe to skip a call on every signing request...
My puppet bootstrap process is:
1 update system
2 download PE tarball and answers file
3 extract tarball
4 run installer with anwsers files

What would be great is if there was an empty hooks directory that could contain some well-known named scripts that are run at certain times. pre_agent.sh or something could be downloaded between steps 3 and 4 and placed into the hooks directory. This would allow me to use facter post install, but pre-agent run to get my data.

What do you think?

I agree some hooks would be nice; the PE installer is currently under heavy revision for PE3.2 so I wouldn't want to hack too much into it just now. But again, if you're relying on custom facts, you need a certificate in order to get them pluginsync'ed so it wouldn't help this situation.

However, you can pre-seed the csr_attributes.yaml in step 1, if you can put a little stand-alone implementation of your fact code and the script that calls out to the web service in a %post kickstart scriptlet or use cloud-init. The installer won't flip out if there's already an /etc/puppetlabs/puppet/ directory in place on the system when it runs.

Pretty interesting!

--
Eric Sorenson - eric.soren...@puppetlabs.com - freenode #puppet: eric0
puppet platform // coffee // techno // bicycles

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/52F3BDB6.7040209%40puppetlabs.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to