summaryrefslogtreecommitdiff
path: root/manifests/defines/vhost_files.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/defines/vhost_files.pp')
-rw-r--r--manifests/defines/vhost_files.pp209
1 files changed, 209 insertions, 0 deletions
diff --git a/manifests/defines/vhost_files.pp b/manifests/defines/vhost_files.pp
new file mode 100644
index 0000000..b7e1847
--- /dev/null
+++ b/manifests/defines/vhost_files.pp
@@ -0,0 +1,209 @@
+# manifests/defines/vhost_files.pp
+
+### vhost configuration files
+#
+# deploy vhost configuration files
+
+
+# this is a wrapper for apache::vhost::file and avhost::template below
+#
+# vhost_mode: which option is choosed to deploy the vhost
+# - template: generate it from a template (default)
+# - file: deploy a vhost file (apache::vhost::file will be called directly)
+#
+define apache::vhost(
+ $path = 'absent',
+ $template_mode = 'static',
+ $vhost_mode = 'template',
+ $vhost_source = 'absent',
+ $vhost_destination = 'absent',
+ $content = 'absent',
+ $domain = 'absent',
+ $domainalias = 'absent',
+ $allow_override = 'None',
+ $php_upload_tmp_dir = 'absent',
+ $php_session_save_path = 'absent',
+ $options = 'absent',
+ $additional_options = 'absent',
+ $template_mode = 'static',
+ $ssl_mode = 'false',
+ $htpasswd_file = 'absent',
+ $htpasswd_path = 'absent',
+ $mod_security = 'true'
+) {
+ # file or template mode?
+ case $vhost_mode {
+ 'file': {
+ apache::vhost::file{$name:
+ vhost_source => $vhost_source,
+ vhost_destination => $vhost_destination,
+ htpasswd_file => $htpasswd_file,
+ htpasswd_path => $htpasswd_path,
+ }
+ }
+ 'template': {
+ apache::vhost::template{$name:
+ path => $path,
+ domain => $domain,
+ domainalias => $domainalias,
+ php_upload_tmp_dir => $php_upload_tmp_dir,
+ php_session_save_path => $php_session_save_path,
+ allow_override => $allow_override,
+ options => $options,
+ additional_options => $additional_options,
+ template_mode => $template_mode,
+ ssl_mode => $ssl_mode,
+ htpasswd_file => $htpasswd_file,
+ htpasswd_path => $htpasswd_path,
+ mod_security => 'false',
+ }
+ }
+ default: { fail("no such vhost_mode: $vhost_mode defined for $name.") }
+ }
+
+}
+
+# htpasswd_file: wether to deploy a passwd for this vhost or not
+# - absent: ignore (default)
+# - nodeploy: htpasswd file isn't deployed by this mechanism
+# - else: try to deploy the file
+#
+# htpasswd_path: where to deploy the passwd file
+# - absent: standardpath (default)
+# - else: path to deploy
+#
+define apache::vhost::file(
+ $vhost_source = 'absent',
+ $vhost_destination = 'absent',
+ $content = 'absent',
+ $htpasswd_file = 'absent',
+ $htpasswd_path = 'absent'
+){
+ $vhosts_dir = $operatingsystem ? {
+ centos => "$apache::centos::config_dir/vhosts.d/",
+ gentoo => "$apache::gentoo::config_dir/vhosts.d/",
+ debian => "$apache::debian::config_dir/vhosts.d/",
+ ubuntu => "$apache::ubuntu::config_dir/vhosts.d/",
+ openbsd => "$apache::openbsd::config_dir/vhosts.d/",
+ default => '/etc/apache2/vhosts.d/',
+ }
+ $real_vhost_destination = $vhost_destination ? {
+ 'absent' => "$vhosts_dir/$name.conf",
+ default => $vhost_destination,
+ }
+ file{"$name.conf":
+ path => $real_vhost_destination,
+ require => File[vhosts_dir],
+ notify => Service[apache],
+ owner => root, group => 0, mode => 0644;
+ }
+ case $content {
+ 'absent': {
+ $real_vhost_source = $vhost_source ? {
+ 'absent' => [
+ "puppet://$server/files/apache/vhosts.d/$fqdn/$name.conf",
+ "puppet://$server/files/apache/vhosts.d/$apache_cluster_node/$name.conf",
+ "puppet://$server/files/apache/vhosts.d/$name.conf",
+ "puppet://$server/apache/vhosts.d/$name.conf",
+ "puppet://$server/apache/vhosts.d/$operatingsystem.$lsbdistcodename/$name.conf",
+ "puppet://$server/apache/vhosts.d/$operatingsystem/$name.conf",
+ "puppet://$server/apache/vhosts.d/$name.conf"
+ ],
+ default => "puppet://$server/$vhost_source",
+ }
+ File["$name.conf"]{
+ source => $real_vhost_source,
+ }
+ }
+ default: {
+ File["$name.conf"]{
+ content => $content,
+ }
+ }
+ }
+ case $htpasswd_file {
+ 'absent','nodeploy': { info("don't deploy a htpasswd file for ${name") }
+ default: {
+ case $htpasswd_path {
+ 'absent': {
+ $real_htpasswd_path = $operatingsystem ? {
+ gentoo => "$apache::gentoo::config_dir/htpasswds/$name",
+ debian => "$apache::debian::config_dir/htpasswds/$name",
+ ubuntu => "$apache::ubuntu::config_dir/htpasswds/$name",
+ openbsd => "$apache::openbsd::config_dir/htpasswds/$name",
+ default => "/etc/apache2/htpasswds/$name"
+ }
+ }
+ default: { $real_htpasswd_path = $htpasswd_path }
+ }
+ file{$real_htpasswd_path:
+ source => [ "puppet://$server/files/apache/htpasswds/$fqdn/$name",
+ "puppet://$server/files/apache/htpasswds/$apache_cluster_node/$name",
+ "puppet://$server/files/apache/htpasswds/$name" ],
+ owner => root, group => 0, mode => 0644;
+ }
+ }
+ }
+}
+
+# template_mode:
+# - php -> for a default php application
+# - static -> for a static application (default)
+#
+# ssl_mode: wether this vhost supports ssl or not
+# - false: don't enable ssl for this vhost (default)
+# - true: enable ssl for this vhost
+# - force: enable ssl and redirect non-ssl to ssl
+#
+define apache::vhost::template(
+ $path = 'absent',
+ $domain = 'absent',
+ $domainalias = 'absent',
+ $allow_override = 'None',
+ $php_upload_tmp_dir = 'absent',
+ $php_session_save_path = 'absent',
+ $options = 'absent',
+ $additional_options = 'absent',
+ $template_mode = 'static',
+ $ssl_mode = 'false',
+ $mod_security = 'true',
+ $htpasswd_file = 'absent',
+ $htpasswd_path = 'absent'
+){
+ $real_path = $path ? {
+ 'absent' => $operatingsystem ? {
+ openbsd => "/var/www/htdocs/$name",
+ default => "/var/www/$name"
+ },
+ default => $path
+ }
+
+ $documentroot = "$real_path/www"
+ $logdir = "$real_path/logs"
+
+ $servername = $domain ? {
+ 'absent' => $name,
+ default => $domain
+ }
+ $serveralias = $domainalias ? {
+ 'absent' => '',
+ default => $domainalias
+ }
+ case $htpasswd_path {
+ 'absent': {
+ $real_htpasswd_path = $operatingsystem ? {
+ gentoo => "$apache::gentoo::config_dir/htpasswds/$name",
+ debian => "$apache::debian::config_dir/htpasswds/$name",
+ ubuntu => "$apache::ubuntu::config_dir/htpasswds/$name",
+ openbsd => "$apache::openbsd::config_dir/htpasswds/$name",
+ default => "/etc/apache2/htpasswds/$name"
+ }
+ }
+ default: { $real_htpasswd_path = $htpasswd_path }
+ }
+ apache::vhost::file{$name:
+ content => template("apache/vhosts/$template_mode/$operatingsystem.erb"),
+ htpasswd_file => $htpasswd_file,
+ htpasswd_path => $htpasswd_path,
+ }
+}