define apache::site::manage( $ensure = 'present', $docroot = false, $manage_docroot = true, $owner = 'root', $group = 'root', $vhost = $name, ) { case $ensure { 'present': { if ($docroot != false) and ($manage_docroot == true) { if !defined(File["${docroot}"]) { file { "${docroot}": ensure => present, owner => $owner, group => $group, mode => 0755, recurse => false, } } if !defined(Exec["check_docroot_${docroot}"]) { # Ensure parent folder exist exec { "check_docroot_${docroot}": command => "/bin/mkdir -p ${docroot}", unless => "/bin/sh -c '[ -e ${docroot} ]'", user => root, before => File["${docroot}"], } } } exec { "/usr/sbin/a2ensite $vhost": command => $::lsbdistcodename ? { 'wheezy' => "/usr/sbin/a2ensite $vhost.conf", default => "/usr/sbin/a2ensite $vhost", }, unless => "/bin/sh -c '[ -L ${apache::conf_sites}-enabled/$vhost.conf ] \ && [ ${apache::conf_sites}-enabled/$vhost.conf -ef ${apache::conf_sites}-available/$vhost.conf ]'", require => Apache::Site::Config[$name], notify => Exec["reload-apache2"], } } 'absent': { exec { "/usr/sbin/a2dissite $vhost": command => $::lsbdistcodename ? { 'wheezy' => "/usr/sbin/a2dissite $vhost.conf", default => "/usr/sbin/a2dissite $vhost", }, onlyif => "/bin/sh -c '[ -L ${apache::conf_sites}-enabled/$vhost.conf ] \ && [ ${apache::conf_sites}-enabled/$vhost.conf -ef ${apache::conf_sites}-available/$vhost.conf ]'", require => Apache::Site::Config[$name], notify => Exec["reload-apache2"], } file { "${apache::conf_sites}-enabled/$vhost.conf": ensure => absent, notify => Exec["reload-apache2"], } } default: { err ("Unknown ensure value: '$ensure'") } } }