In my company binaries for deployment are released into an FTPS repo (and 
are not packages).   The simplest option of making them available via *
puppet:///* urls is to constantly sync the FTPS contents to the modules 
directory on the master, but the volume of binaries is ever-growing and 
only a small percentage is actually used from the catalogs for any specific 
deployment, so that's not ideal.

I've implemented a *parser function* that uses curl, which I use like this: 

file { something:
  source => *ftpspull*("puppet:///modules/whatever/path")
}

The function performs the on-demand download from ftps to the modules 
directory, and simply returns its argument to the file resource.  This 
works really well, but the downloads occur at catalog compile time, and 
thus take some time.  I can solve the timeout issues with *configtimeout*on the 
agents, so that's acceptable.  More importantly, if a partial 
deployment is desired (via *puppet kick --tag something*), the operator has 
to wait for all downloads to happen even if most of them are not involved 
in the specified tags.

I've considered the following:

   - Figuring out what the tag was for this kick and only performing 
   downloads for the affected resources.   I failed to access the command line 
   tag value, and it's likely a bad idea since the catalog would be considered 
   compiled but only a subset would be downloaded
   - Creating a provider for the *file* resource.  This seems non-trivial 
   as I'd have to duplicate the posix provider but with added functionality.   
   More importantly, it looks like the execution of a provider occurs on the 
   agent and not on the master, so the download would occur once for each node 
   (which is not acceptable since the transfers are transcontinental and are 
   already slow).
   - Creating a provider for the *package* resource that would technically 
   not install anything, but just retrieve files - which probably means that 
   I'd need file+package to actually install the files.  This seemed like a 
   horrible hack so I didn't explore it too much.


I'm starting to feel like I'm heading down an incorrect path altogether - 
would the experts be able to offer some direction?

Many thanks.

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to