Hi,

I am looking for some guidance on how easy it might be to add a new source 
type to the File puppet type in the puppet code base.

Essentially it would work something like:

node 'aws-ec2-instance' {
  file { "/etc/puppet/secure/keys/private_key.pkcs7.pem":
    owner  => puppet,
    group  => puppet,
    mode   => 0400,
    *source **=> "s3://myorg-puppetmaster/hiera-eyaml.key"*
  }
}

(I assume that this would run locally on the agent "aws-ec2-instance' and 
not the puppetmaster.  So the agent could leverage the credentials provided 
by the IAM role).

Using the AWS SDK for Ruby it seems like it would be straight forward to 
add to puppet.  However I am new to the puppet code base (and have limited 
Ruby programming experience).

I have been trying to find areas of the code base I think I would either 
need to modify or add files to.  Here is a list of files I believe I would 
need to extend:

https://github.com/puppetlabs/puppet/blob/master/lib/puppet/file_serving/terminus_selector.rb

   - Add the new s3 terminus

https://github.com/puppetlabs/puppet/blob/master/lib/puppet/indirector/request.rb

   - Update set_uri_key to detect the new s3 URI scheme
   - Make changes to do_request?


https://github.com/puppetlabs/puppet/tree/master/lib/puppet/indirector

   - Add a new s3.rb file describing how to interact with the s3 service


Is there other areas I would need to modify?

Is this something that would ultimately make it into the application?

I have looked 
at https://docs.puppetlabs.com/guides/install_puppet/from_source.html is 
there any other good references (blog posts) which would assist with 
developing puppet.

Thanks,

Peter

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/c195c20e-eb79-4b37-b906-cca595aa03f1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to