--- /dev/null
+define apache2::site (
+ $config = undef,
+ $template = undef,
+ $ensure = present,
+ $site = undef
+) {
+
+ include apache2
+
+ if ! ($config or $template) {
+ err ( "No configuration found for ${name}" )
+ }
+
+ if $site {
+ $base = $site
+ } else {
+ $base = $name
+ }
+
+ $target = "/etc/apache2/sites-available/${base}"
+
+ $link_target = $ensure ? {
+ present => $target,
+ absent => absent,
+ default => err ( "Unknown ensure value: '$ensure'" ),
+ }
+
+ if $template {
+ file { $target:
+ ensure => $ensure,
+ content => template($template),
+ require => Package['apache2'],
+ notify => Service['apache2'],
+ }
+ } else {
+ file { $target:
+ ensure => $ensure,
+ source => $config,
+ require => Package['apache2'],
+ notify => Service['apache2'],
+ }
+ }
+
+ file { "/etc/apache2/sites-enabled/${name}":
+ ensure => $link_target,
+ notify => Service['apache2'],
+ }
+}