# # Puppet module for Apache # # This module is distributed under the GNU Affero General Public License: # # Backup module for puppet # Copyright (C) 2009 Sarava Group # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # TODO: log level, log files, etc # TODO: better variable names, enable value overwriting class apache { package { "apache": ensure => installed, } # TODO: enable mod_macro package { "mod_macro": name => "libapache2-mod-macro", ensure => installed, require => Package["apache"], } service { "apache": ensure => running, require => Package["apache", "mod_macro"], } # apache mod_macro configuration file { "/etc/apache2/conf.d/macros": ensure => present, content => template('apache/macros.erb'), owner => root, group => root, mode => 0644, require => Service["apache"], notify => Service["apache"], } # prepare variables to use in templates case $apache_sites_folder { '': { $apache_sites_folder = '/var/www/sites' } } case $apache_www_folder { '': { $apache_www_folder= '/var/www' } } # TODO: ensure folders exist with right modes and ownership define website($ensure = present, $docroot = false, $redirect = false, $protocol = 'http', $server_alias = false, $use = false) { file { "/etc/apache2/sites-available/$title": ensure => $ensure, content => template('apache/website.erb'), owner => root, group => root, mode => 0644, require => Service["apache"], notify => Service["apache"], } $status = $ensure ? { 'present' => "/etc/apache2/sites-available/$title", default => 'absent', } file { "/etc/apache2/sites-enabled/$title": ensure => $status, owner => root, group => root, require => File["/etc/apache2/sites-available/$title"], notify => Service["apache"], } } }