98 lines
3.2 KiB
Text
98 lines
3.2 KiB
Text
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 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
|
|
|
|
|
|
# class to setup basic motd, include on all nodes
|
|
class motd {
|
|
concat{"/etc/motd":
|
|
owner => root,
|
|
group => root,
|
|
mode => 644
|
|
}
|
|
|
|
concat::fragment{"motd_header":
|
|
content => "\nPuppet modules on this server:\n\n",
|
|
order => 1,
|
|
}
|
|
}
|
|
|
|
# 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.
|
|
|
|
- At present you cannot change the ownership of the file by just setting
|
|
the property on the resources, we have a work around in mind.
|
|
|
|
CHANGELOG:
|
|
- 2010/02/19 - initial release
|
|
- 2010/03/12 - add support for 0.24.8 and newer
|
|
- make the location of sort configurable
|
|
- add the ability to add shell comment based warnings to
|
|
top of files
|
|
- add the ablity to create empty files
|
|
- 2010/04/05 - fix parsing of WARN and change code style to match rest
|
|
of the code
|
|
- Better and safer boolean handling for warn and force
|
|
- Don't use hard coded paths in the shell script, set PATH
|
|
top of the script
|
|
- Use file{} to copy the result and make all fragments owned
|
|
by root. This means we can chnage the ownership/group of the
|
|
resulting file at any time.
|
|
- You can specify ensure => "/some/other/file" in concat::fragment
|
|
to include the contents of a symlink into the final file.
|
|
- 2010/04/16 - Add more cleaning of the fragment name - removing / from the $name
|
|
|
|
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:
|
|
R.I.Pienaar - rip@devco.net / www.devco.net / @ripienaar
|