$apache2_sites = "/etc/apache2/sites"
$apache2_mods = "/etc/apache2/mods"
class apache2 {
# Define an apache2 site. Place all site configs into
# /etc/apache2/sites-available and en-/disable them with this type.
#
# You can add a custom require (string) if the site depends on packages
# that aren't part of the default apache2 package. Because of the
# package dependencies, apache2 will automagically be included.
define site ( $ensure = 'present' ) {
case $ensure {
'present' : {
exec { "/usr/sbin/a2ensite $name":
unless => "/bin/readlink -e ${apache2_sites}-enabled/$name",
notify => Exec["reload-apache2"],
require => Package[$require],
}
}
'absent' : {
exec { "/usr/sbin/a2dissite $name":
onlyif => "/bin/readlink -e ${apache2_sites}-enabled/$name",
notify => Exec["reload-apache2"],
require => Package["apache2"],
}
}
default: { err ( "Unknown ensure value: '$ensure'" ) }
}
}
# Define an apache2 module. Debian packages place the module config
# into /etc/apache2/mods-available.
#
# You can add a custom require (string) if the module depends on
# packages that aren't part of the default apache2 package. Because of
# the package dependencies, apache2 will automagically be included.
define module ( $ensure = 'present', $require = 'apache2' ) {
case $ensure {
'present' : {
exec { "/usr/sbin/a2enmod $name":
unless => "/bin/readlink -e ${apache2_mods}-enabled/${name}.load",
notify => Exec["force-reload-apache2"],
require => Package[$require],
}
}
'absent': {
exec { "/usr/sbin/a2dismod $name":
onlyif => "/bin/readlink -e ${apache2_mods}-enabled/${name}.load",
notify => Exec["force-reload-apache2"],
require => Package["apache2"],
}
}
default: { err ( "Unknown ensure value: '$ensure'" ) }
}
}
# Notify this when apache needs a reload. This is only needed when
# sites are added or removed, since a full restart then would be
# a waste of time. When the module-config changes, a force-reload is
# needed.
exec { "reload-apache2":
command => "/etc/init.d/apache2 reload",
refreshonly => true,
}
exec { "force-reload-apache2":
command => "/etc/init.d/apache2 force-reload",
refreshonly => true,
}
# We want to make sure that Apache2 is running.
service { "apache2":
ensure => running,
hasstatus => true,
hasrestart => true,
require => Package["apache2"],
}
}
Add your own recipes for actually including the stuff you want
included:
# The packages that need to be installed on each webserver
$wantedpackages = ["apache2", "tomcat5", "sun-java5-jdk", "libapache2-mod-jk" ]
package { $wantedpackages: ensure => installed, }
$enabledsites = ["www.example.com", "blog.example.com"]
$disabledsites = ["nudes.example.com"]
apache2::site {
$enabledsites: ensure => 'present';
$disabledsites: ensure => 'absent';
}
# Tomcat-enabled site
apache2::module { "jk": require => "libapache2-mod-jk" }
apache2::site { "java.example.com": require => "libapache2-mod-jk" }
No comments:
Post a Comment
If you have any suggestion or clarification you send it via on this form.