]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/apache2/manifests/init.pp
make apache stuff a little more automatic
[dsa-puppet.git] / modules / apache2 / manifests / init.pp
1 class apache2 {
2         include munin-node::apache
3
4         package {
5                 "apache2": ensure => installed;
6                 "logrotate": ensure => installed;
7         }
8
9         define activate_apache_site($ensure=present, $site=$name) {
10                 case $site {
11                         "": { $base = $name }
12                         default: { $base = $site }
13                 }
14
15                 case $ensure {
16                         present: {
17                                 file { "/etc/apache2/sites-enabled/$name":
18                                          ensure => "/etc/apache2/sites-available/$base",
19                                          require => Package["apache2"],
20                                          notify => Exec["reload-apache2"];
21                                 }
22                         }
23                         absent: {
24                                 file { "/etc/apache2/sites-enabled/$name":
25                                          ensure => $ensure,
26                                          notify => Exec["reload-apache2"];
27                                 }
28                         }
29                         default: { err ( "Unknown ensure value: '$ensure'" ) }
30                 }
31         }
32
33         define enable_module($ensure=present) {
34                 case $ensure {
35                         present: {
36                                 exec { "/usr/sbin/a2enmod $name":
37                                         unless => "/bin/sh -c '[ -L /etc/apache2/mods-enabled/${name}.load ]'",
38                                         notify => Exec["force-reload-apache2"],
39                                 }
40                         }
41                         absent: {
42                                 exec { "/usr/sbin/a2dismod $name":
43                                         onlyif => "/bin/sh -c '[ -L /etc/apache2/mods-enabled/${name}.load ]'",
44                                         notify => Exec["force-reload-apache2"],
45                                 }
46                         }
47                         default: { err ( "Unknown ensure value: '$ensure'" ) }
48                  }
49         }
50
51         enable_module {
52                 "info":;
53                 "status":;
54         }
55
56         activate_apache_site {
57                 "00-default": site => "default-debian.org";
58                 "000-default": ensure => absent;
59         }
60
61         file {
62                 "/etc/apache2/conf.d/ressource-limits":
63                         content => template("apache2/ressource-limits.erb"),
64                         require => Package["apache2"],
65                         notify  => Exec["reload-apache2"];
66                 "/etc/apache2/conf.d/security":
67                         source  => [ "puppet:///apache2/per-host/$fqdn/etc/apache2/conf.d/security",
68                                      "puppet:///apache2/common/etc/apache2/conf.d/security" ],
69                         require => Package["apache2"],
70                         notify  => Exec["reload-apache2"];
71                 "/etc/apache2/conf.d/local-serverinfo":
72                         source  => [ "puppet:///apache2/per-host/$fqdn/etc/apache2/conf.d/local-serverinfo",
73                                      "puppet:///apache2/common/etc/apache2/conf.d/local-serverinfo" ],
74                         require => Package["apache2"],
75                         notify  => Exec["reload-apache2"];
76                 "/etc/apache2/conf.d/server-status":
77                         source  => [ "puppet:///apache2/per-host/$fqdn/etc/apache2/conf.d/server-status",
78                                      "puppet:///apache2/common/etc/apache2/conf.d/server-status" ],
79                         require => Package["apache2"],
80                         notify  => Exec["reload-apache2"];
81
82                 "/etc/apache2/sites-available/default-debian.org":
83                         source  => [ "puppet:///apache2/per-host/$fqdn/etc/apache2/sites-available/default-debian.org",
84                                      "puppet:///apache2/common/etc/apache2/sites-available/default-debian.org" ],
85                         require => Package["apache2"],
86                         notify  => Exec["reload-apache2"];
87
88                 "/etc/logrotate.d/apache2":
89                         source  => [ "puppet:///apache2/per-host/$fqdn/etc/logrotate.d/apache2",
90                                      "puppet:///apache2/common/etc/logrotate.d/apache2" ];
91
92                 "/srv/www":
93                         mode    => 755,
94                         ensure  => directory;
95                 "/srv/www/default.debian.org":
96                         mode    => 755,
97                         ensure  => directory;
98                 "/srv/www/default.debian.org/htdocs":
99                         mode    => 755,
100                         ensure  => directory;
101                 "/srv/www/default.debian.org/htdocs/index.html":
102                         content => template("apache2/default-index.html");
103
104                 # sometimes this is a symlink
105                 #"/var/log/apache2":
106                 #       mode    => 755,
107                 #       ensure  => directory;
108         }
109
110         exec { "reload-apache2":
111                command => "/etc/init.d/apache2 reload",
112                refreshonly => true,
113         }
114
115         exec { "force-reload-apache2":
116                command => "/etc/init.d/apache2 force-reload",
117                refreshonly => true,
118         }
119 }