summaryrefslogtreecommitdiff
path: root/README
blob: 8dbaf5c6b40657137d80605233b9076007043d65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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.

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