From bf36ba5e988a7bb3f163ed0575020ef714519edc Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Fri, 12 Apr 2013 15:58:58 -0400 Subject: Update README with migration notice, and more information on how to use the module Move license information to LICENSE file --- LICENSE | 10 ++++ README | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 168 insertions(+), 38 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4b46720 --- /dev/null +++ b/LICENSE @@ -0,0 +1,10 @@ +written by immerda project group +admin+puppet(at)immerda.ch + +adapted by Puzzle ITC +haerry+puppet(at)puzzle.ch + +original idea by David Schmitt + + +License: GPLv3 diff --git a/README b/README index 0619850..afd46c3 100644 --- a/README +++ b/README @@ -5,28 +5,47 @@ This module tries to manage apache on different distros in a similar manner. a few additional directories have to be created as well some configuration files have to be deployed to fit this schema. -! Upgrade Notice ! +! Upgrade Notices ! - currently deployed apache::config::file resources could be broken - so one should change occurences of this resource's argument from: + * this module now only works with puppet 2.7 or newer - source => "modules/site-apache/blah" + * this module now uses parameterized classes, if you were using global + variables before, you need to change the class declarations in your manifests + + * this module now requires the stdlib module + + * this module no longer requires the common module + + * you must change your modules/site-apache to modules/site_apache + + * the $apache_no_default_site variable is no longer supported, you should + switch to passing the parameter "no_default_site => true" to the apache class + + * the $use_munin variable is no longer supported, you should switch to + passing the parameter 'manage_munin' to the apache class + + * the $use_shorewall variable is no longer supported, you should switch to + passing the parameter 'manage_shorewall' to the apache class - to a full source specification string: + * if you were using apache::vhost::file, or apache::vhost::template, there is a + wrapper called apache::vhost now that takes a $vhost_mode (either the default + 'template', or 'file), although you can continue to use the longer defines + + * Previously, apache::config::file resources would require the source to be a + full source specification, this is no longer needed, so please change any: source => "puppet:///modules/site-apache/blah" + to be: + + source => "modules/site-apache/blah" -written by immerda project group -admin+puppet(at)immerda.ch -adapted by Puzzle ITC -haerry+puppet(at)puzzle.ch +Requirements: -original idea by David Schmitt - + * puppet 2.7 or newer + * stdlib -License: GPLv3 Usage ===== @@ -38,6 +57,29 @@ To install Apache, simply include the 'apache' class in your manifests: include apache +This will give you a basic managed setup. You can pass a couple parameters to the +class to have the module do some things for you: + + * manage_shorewall: If you have the shorewall module installed and are using + it then rules will be automatically defined for you to let traffic come from + the exterior into the web server via port 80, and also 443 if you're using + the apache::ssl class. (Default: false) + + * manage_munin: If you have the munin module installed and are using it, then + some apache graphs will be configured for you. (Default: false) + + * no_default_site: If you do not want the 0-default.conf and + 0-default_ssl.conf virtualhosts automatically created in your node + configuration. (Default: false) + +For example: + + class { 'apache': + manage_shorewall => true, + manage_munin => true, + no_default_site => true + } + If you want to install Apache and also enable SSL support: include apache::ssl @@ -46,55 +88,133 @@ You can install the ITK worker model to enforce stronger, per-user security: include apache::itk +On CentOS you can include 'apache::itk_plus' to get that mode. Not currently +implemented for other operating systems + You can combine SSL support and the ITK worker model by including both classes. -If you do not want the 0-default.conf and 0-default_ssl.conf virtualhosts -automatically created, then simply set $apache_no_default_site = true in your -node configuration. Configuring Apache ------------------ -To deploy a global configuration file in the conf.d directory under Apache's -config directory, you can use the following: +To deploy a configuration files to the conf.d or include.d directory under +Apache's config directory, you can use the following: -apache::config::global { 'filename': +apache::config::file { 'filename': content => 'Alias /thisApplication /usr/share/thisApplication/htdocs', } +by default this will deploy a conf.d global configuration file called 'filename' +with that content. + +You can pass the parameter 'type => include' to add includes for vhosts + + To manage users in an htpasswd file: apache::htpasswd_user { "joe@$domain": - site => "$domain", - username => 'joe', - password => "$pass", - password_iscrypted = true, + ensure => present, # default: present + site => "$domain", # default: 'absent' - will use $name + username => 'joe', # default: 'absent' - will use $name + password => "pass", + password_iscrypted => false, # default: false - will sha1 hash the value + path => 'absent' # default: 'absent' - /var/www/htpasswds/${site} } +This will place an encrypted version of "pass" for user joe into +/var/www/htpasswds/${site} + +You will need to make sure that ${site} exists before this is done, see the +apache::vhost class below for how this is done. + VirtualHost files ----------------- -vhosts can be added with the vhosts define: -(currently only plain vhosts file are supported) +vhosts can be added with the apache::vhost define. + +You can ship a flat file containing the configuration, or a template. That is +controlled by the 'vhost_mode' parameter, which can be either 'file', or +'template' (default). -apache::vhosts::file { "$domain" } +Unless specified, the source will be automatically pulled from +modules/site_apache/{templates,files}/vhosts.d, searched in this order: -multiple shortcuts can be used to define a vhost with certain capabilities: + "puppet:///modules/site_apache/vhosts.d/${::fqdn}/${name}.conf", + "puppet:///modules/site_apache/vhosts.d/{$apache::cluster_node}/${name}.conf", + "puppet:///modules/site_apache/vhosts.d/${::operatingsystem}.${::lsbdistcodename}/${name}.conf", + "puppet:///modules/site_apache/vhosts.d/${::operatingsystem}/${name}.conf", + "puppet:///modules/site_apache/vhosts.d/${name}.conf", -apache::vhosts::php::drupal { "$domain" } +otherwise you can pass a 'content' parameter to configure a template location that +it should be pulled from, or a 'vhost_source' parameter to specify the file source. -Munin ------ +For example: -If you are using munin, and have the puppet munin module installed, you can set -the variable $use_munin = true to have graphs setup for you. +This would deploy a the vhost for $domain, pulled from a file from the sources +listed above: + +apache::vhost { "$domain": vhost_mode => 'file' } + +apache::vhost { "$domain": + vhost_mode => 'file', + vhost_source => 'modules/site_configs/vhosts.d/${name}.conf" +} -For now, though, this only enables the server-status page in apache. -Shorewall ---------- +There are multiple other additional configurables that you can pass to each +vhost definition: + +* logmode: + - default: Do normal logging to CustomLog and ErrorLog + - nologs: Send every logging to /dev/null + - anonym: Don't log ips for CustomLog, send ErrorLog to /dev/null + - semianonym: Don't log ips for CustomLog, log normal ErrorLog + +* run_mode: controls in which mode the vhost should be run, there are different setups + possible: + - normal: (*default*) run vhost with the current active worker (default: prefork) don't + setup anything special + - itk: run vhost with the mpm_itk module (Incompatibility: cannot be used in combination + with 'proxy-itk' & 'static-itk' mode) + - proxy-itk: run vhost with a dual prefork/itk setup, where prefork just proxies all the + requests for the itk setup, that listens only on the loobpack device. + (Incompatibility: cannot be used in combination with the itk setup.) + - static-itk: run vhost with a dual prefork/itk setup, where prefork serves all the static + content and proxies the dynamic calls to the itk setup, that listens only on + the loobpack device (Incompatibility: cannot be used in combination with + 'itk' mode) + +* mod_security: Whether we use mod_security or not (will include mod_security module) + - false: (*default*) don't activate mod_security + - true: activate mod_security + +For templates, you can pass various parameters that will automatically configure +the template accordingly (such as php_options and php_settings). Please see +manifests/vhost/template.pp for the full list. + +There are various pre-made vhost configurations that use good defaults that you can use: + +apache::vhost::gitweb - sets up a gitweb vhost +apache::vhost::modperl - uses modperl, with optional fastcgi +apache::vhost::passenger - setup passenger +apache::vhost::proxy - setup a proxy vhost +apache::vhost::redirect - vhost to redirect hosts +apache::vhost::static - a static vhost +apache::vhost::webdav - for managing webdave accessible targets + +Additionally, for php sites, there are several handy pre-made vhost configurations: + +apache::vhost::php::drupal +apache::vhost::php::gallery2 +apache::vhost::php::global_exec_bin_dir +apache::vhost::php::joomla +apache::vhost::php::mediawiki +apache::vhost::php::safe_mode_bin +apache::vhost::php::silverstripe +apache::vhost::php::simplemachine +apache::vhost::php::spip +apache::vhost::php::standard +apache::vhost::php::typo3 +apache::vhost::php::webapp +apache::vhost::php::wordpress -If you have the shorewall module installed and are using it, you can set the -variable $use_shorewall = true to have a rule automatically defined for you to -let traffic come from the exterior into the web server via port 80, and also -443 if you're using the apache::ssl class. -- cgit v1.2.3