class apache {
$packagelist = ["apache2", "apache2.2-common", "apache2-mpm-prefork", "apache2-utils"]

package { $packagelist:
ensure => "$packageAuto"
}
file { "/etc/apache2/ports.conf":
source => "puppet:///apache/ports.conf",
require => Package["apache2"],
}

file { "/etc/apache2/sites-available/default":
content => template("apache/sites-available/default.erb"),
require => Package["apache2"]
}

file { "/etc/apache2/sites-enabled/000-default":
ensure => "/etc/apache2/sites-available/default",
require => File["/etc/apache2/sites-available/default"],
}

define module ( $ensure = 'present', $pack = 'apache2' ) {
$apache2_mods = "/etc/apache2/mods"
case $ensure {
'present' : {
exec { "/usr/sbin/a2enmod $name":
unless => "/bin/sh -c '[ -L ${apache2_mods}-enabled/${name}.load ]'",
notify => Exec["apache-force-reload"],
require => Package[$pack],
}
}
'absent': {
exec { "/usr/sbin/a2dismod $name":
onlyif => "/bin/sh -c '[ -L ${apache2_mods}-enabled/${name}.load ]'",
notify => Exec["apache-force-reload"],
require => Package["apache2"],
}
}
default: {
err ( "Unknown ensure value: '$ensure'" )
}
}
}

exec { "apache-force-reload":
command => "/etc/init.d/apache2 force-reload",
refreshonly => true,
}

service { "apache":
name => "apache2",
ensure => running,
enable => true,
hasrestart => true,
require => Package["apache2"],
}

}