Merge remote branch 'cmaisonneuve/master'
[puppet_common.git] / manifests / defines / config_file.pp
1 # common/manifests/defines/config_file.pp -- create a config file with default permissions
2 # Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
3 # See LICENSE for the full license granted to you.
4
5 # A simple wrapper to give all configuration files common defaults.
6 #
7 # Usage:
8 # config_file { filename:
9 #     content => "....\n",
10 # }
11 #
12 # Examples:
13 #
14 # To create the file /etc/vservers/${vs_name}/context with specific
15 # content:
16 #
17 # config_file { "/etc/vservers/${vs_name}/context":
18 #              content => "${context}\n",
19 #              notify => Exec["vs_restart_${vs_name}"],
20 #              require => Exec["vs_create_${vs_name}"];
21 # }
22 #
23 # To create the file /etc/apache2/sites-available/munin-stats with the
24 # content pulled from a template:
25 #
26 # config_file { "/etc/apache2/sites-available/munin-stats":
27 #              content => template("apache/munin-stats"),
28 #              require => Package["apache2"],
29 #              notify => Exec["reload-apache2"]
30 # }
31
32 define config_file ($content = '', $source = '', $ensure = 'present') {
33     file { $name:
34         ensure => $ensure,
35         # keep old versions on the server
36         backup => puppet,
37         # default permissions for config files
38         mode => 0644, owner => root, group => 0,
39         # really detect changes to this file
40         checksum => md5,
41     }
42
43     case $source {
44         '': { }
45         default: { File[$name] { source => $source } }
46     }
47
48     case $content {
49         '': { }
50         default: { File[$name] { content => $content } }
51     }
52
53 }
54
55