No description
Find a file
2012-08-30 11:06:58 +02:00
files Remove the gnu parameter from concat 2012-04-17 12:02:38 -07:00
lib/facter don't use a hardcoded concatdir 2011-06-23 11:05:43 +02:00
manifests Document the path parameter and provide a small use case. 2012-08-30 11:06:58 +02:00
spec Add a second spec test for the name/path combination 2012-08-30 10:10:23 +02: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
.gitignore Add Travis CI support 2012-06-23 17:15:47 -04:00
.travis.yml Add Travis CI support 2012-06-23 17:15:47 -04:00
CHANGELOG - make the root group configurable in the concat::setup class for portability 2011-02-03 18:01:36 +00:00
LICENSE add files needed for the module forge 2012-04-30 10:45:08 +01:00
Modulefile Fix module name to make the PMT happier 2012-06-28 11:09:57 -07:00
Rakefile Lets use puppetlabs_spec_helper 2012-06-23 17:13:08 -04:00
README.markdown Include concat::setup from concat, so users don't need to 2012-07-11 16:54:05 -05:00

What is it?

A Puppet module that can construct files from fragments.

Please see the comments in the various .pp files for details as well as posts on my blog at http://www.devco.net/

Released under the Apache 2.0 licence

Usage:

If you wanted a /etc/motd file that listed all the major modules on the machine. And that would be maintained automatically even if you just remove the include lines for other modules you could use code like below, a sample /etc/motd would be:

Puppet modules on this server:

    -- Apache
    -- MySQL

Local sysadmins can also append to the file by just editing /etc/motd.local their changes will be incorporated into the puppet managed motd.

# class to setup basic motd, include on all nodes
class motd {
   $motd = "/etc/motd"

   concat{$motd:
      owner => root,
      group => root,
      mode  => 644
   }

   concat::fragment{"motd_header":
      target => $motd,
      content => "\nPuppet modules on this server:\n\n",
      order   => 01,
   }

   # local users on the machine can append to motd by just creating
   # /etc/motd.local
   concat::fragment{"motd_local":
      target => $motd,
      ensure  => "/etc/motd.local",
      order   => 15
   }
}

# used by other modules to register themselves in the motd
define motd::register($content="", $order=10) {
   if $content == "" {
      $body = $name
   } else {
      $body = $content
   }

   concat::fragment{"motd_fragment_$name":
      target  => "/etc/motd",
      content => "    -- $body\n"
   }
}

# a sample apache module
class apache {
   include apache::install, apache::config, apache::service

   motd::register{"Apache": }
}

Known Issues:

  • In 0.24.8 you will see inintended notifies, if you build a file in a run, the next run will also see it as changed. This is due to how 0.24.8 does the purging of unhandled files, this is improved in 0.25.x and we cannot work around it in our code.
  • Since puppet-concat now relies on a fact for the concat directory, you will need to set up pluginsync = true for at least the first run. You have this issue if puppet fails to run on the client and you have a message similar to "err: Failed to apply catalog: Parameter path failed: File paths must be fully qualified, not 'undef' at [...]/concat/manifests/setup.pp:44".

Contributors:

Paul Elliot

  • Provided 0.24.8 support, shell warnings and empty file creation support.

Chad Netzer

  • Various patches to improve safety of file operations
  • Symlink support

David Schmitt

  • Patch to remove hard coded paths relying on OS path
  • Patch to use file{} to copy the resulting file to the final destination. This means Puppet client will show diffs and that hopefully we can change file ownerships now

Contact:

You can contact me on rip@devco.net or follow my blog at http://www.devco.net I am also on twitter as ripienaar