No description
Find a file
Joshua Hoblitt 987eaec7ab improve whitespace consistency + remove semicolon resource compression
Per http://docs.puppetlabs.com/guides/style_guide.html#resources
resource compression with the "semicolon syntax" is now considered bad
practice.
2013-10-22 08:54:48 -07:00
files Merge pull request #61 from hubspotdevops/newline_upstream 2013-08-09 08:44:18 -07:00
lib/facter RDoc cleanup 2013-05-10 11:58:02 +02:00
manifests improve whitespace consistency + remove semicolon resource compression 2013-10-22 08:54:48 -07:00
spec Fix group ownership on files. 2013-10-22 12:36:19 +01:00
.fixtures.yml Lets use puppetlabs_spec_helper 2012-06-23 17:13:08 -04:00
.gemfile Add puppet-lint and rspec-puppet gem for Travis CI 2012-08-14 18:23:44 +02:00
.gitattributes Added .gitattributes to maintain line endings for .sh files 2013-10-19 22:30:44 +01:00
.gitignore Updated .gitignore for spec generated files 2013-10-02 13:53:00 +01:00
.nodeset.yml Add rspec-system tests. 2013-08-08 08:44:31 -07:00
.travis.yml Add rspec-system tests. 2013-08-08 08:44:31 -07:00
CHANGELOG Release 1.0.0. 2013-08-09 10:42:02 -07:00
Gemfile Ensure that ::setup runs before ::fragment in all cases. 2013-09-24 17:12:27 -04:00
LICENSE add files needed for the module forge 2012-04-30 10:45:08 +01:00
Modulefile Release 1.0.0. 2013-08-14 18:50:04 -04:00
Rakefile Add rspec-system tests. 2013-08-08 08:44:31 -07:00
README Release 1.0.0. 2013-08-09 10:42:02 -07:00
README.markdown Merge pull request #77 from jhoblitt/remove_manual_include_concat__setup 2013-10-21 07:20:56 -07:00

== Module: concat

A system to construct files using fragments from other files or templates.

This requires at least puppet 0.25 to work correctly as we use some
enhancements in recursive directory management and regular expressions
to do the work here.

=== Usage:

The basic use case is as below:

 concat{"/etc/named.conf":
   notify => Service["named"]
 }

 concat::fragment{"foo.com_config":
   target  => "/etc/named.conf",
   order   => 10,
   content => template("named_conf_zone.erb")
 }

 # add a fragment not managed by puppet so local users
 # can add content to managed file
 concat::fragment{"foo.com_user_config":
   target  => "/etc/named.conf",
   order   => 12,
   ensure  => "/etc/named.conf.local"
 }

This will use the template named_conf_zone.erb to build a single
bit of config up and put it into the fragments dir.  The file
will have an number prefix of 10, you can use the order option
to control that and thus control the order the final file gets built in.

You can also specify a path and use a different name for your resources:

 # You can make this something dynamic, based on whatever parameters your
 # module/class for example.
 $vhost_file = '/etc/httpd/vhosts/01-my-vhost.conf'

 concat{'apache-vhost-myvhost':
  path => $vhost_file,
 }

 # We don't care where the file is located, just what to put in it.
 concat::fragment {'apache-vhost-myvhost-main':
  target  => 'apache-vhost-myvhost',
  content => '<virtualhost *:80>',
  order   => 01,
 }

 concat::fragment {'apache-vhost-myvhost-close':
  target  => 'apache-vhost-myvhost',
  content => '</virtualhost>',
  order   => 99,
 }

=== Setup:

The class concat::setup uses the fact concat_basedir to define the variable
$concatdir, where all the temporary files and fragments will be
durably stored. The fact concat_basedir will be set up on the client to
<Puppet[:vardir]>/concat, so you will be able to run different setup/flavours
of puppet clients.
However, since this requires the file lib/facter/concat_basedir.rb to be
deployed on the clients, so you will have to set "pluginsync = true" on
both the master and client, at least for the first run.

There's some regular expression magic to figure out the puppet version but
if you're on an older 0.24 version just set $puppetversion = 24

=== Detail:

We use a helper shell script called concatfragments.sh that gets placed
in <Puppet[:vardir]>/concat/bin to do the concatenation.  While this might
seem more complex than some of the one-liner alternatives you might find on
the net we do a lot of error checking and safety checks in the script to avoid
problems that might be caused by complex escaping errors etc.

=== License:

Apache Version 2

=== Latest:

http://github.com/puppetlabs/puppetlabs-concat/

=== Contact:

Puppetlabs, via our puppet-users@ mailing list.