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.