I have been having a lot of fun coding with what puppet I have had experience with so far, and so far it looks like it can do most of what I need it to do.
One thing I am not finding in the documentation (with some searching) is how to (if it is possible) have pre-built configuration files to use on the servers. For example:
I use puppet to install httpd. Now we have apache on the client. Well now the httpd.conf needs some customization and specific settings. I have the httpd.conf I need to use on the puppet master. How do I get it from the puppet master to the client?
I went on the IRC channel for puppet, and found out this can be done with the source attribute.
the location of files is set in /etc/puppet/fileserver.conf - the configuration there is straightforward.
The content tag instead of source can be used to put a literal string into the file.
If I were you, I'd use the
puppet:///modules/<module name>/iptables.sh
format. That way everything is confined to module and and you don't need a fileserver.conf. Thepuppet:///modules/*
is free.Using static files is a good start. Using templates is even better, and more flexible in the long run.
You can read the Puppet Template Documentation
Example:
This combined with a .erb template creates the desired config file using the variables $hostname and $portnum.