Puppet - Any way to copy predefined custom configuration files for software on clients from the puppet master (host)?

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.

file { "/etc/firewall.sh":
    owner => root,
    group => root,
    mode => 550,
    source => "puppet:///files/iptables.sh"
}

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. The puppet:///modules/* is free.