- Puppet defaults to using a pull model, nodes pull their configs
- Implement Puppet where pulling is not an option (DMZ)
- SSH key access to the target node as root
- puppet and rsync installed on the remote node and local node
- puppet version 2.7.0 or newer
- Alternate site.pp (site-push.pp)
- Generates facts on target node and fetches
- Compiles the catalog on the master
- Pushes files from the File[] resource and replaces puppet:https:/// paths
- Modifies catalog to replace the File[] source statements
- Pushes catalog to target node
- Applies catalog
Install git with apt, yum, whatever your flavor
yum install git
git clone git:https://github.com/tomas-edwardsson/puppet-push.git
make rpm
and install that, or
make install
edit /etc/puppet-push.conf
PUPPET_VAR_DIR="/var/lib/puppet"
PUPPET_MODULE_DIR=/etc/puppet/modules/production
REMOTE_SSH_USER=root
VERBOSE=0
If you are using a filebucket server for the pull based hosts you will need to override it for the push based hosts.
An alternative site.pp file is provided which can be set in puppet-push.conf but if you can conditionally set the filebucket and file backup parameters in the manifests for the push based nodes it's possible to skip a special site.pp file.
Containing:
filebucket { local:
server => false,
path => "/var/lib/puppet/clientbucket",
}
File { backup => local }
puppet-push <nodename>
This is an ALPHA, I have only run it on a few nodes and it may break something.
GPLv3
Pall Valmundsson [email protected]
Tomas Edwardsson [email protected]
Sponsored by the Icelandic National Hospital