# manifests/defines/vhost_varieties.pp ### sepcific vhosts varieties # # - apache::vhost::static # - apache::vhost::php # - apache::vhost::joomla # - apache::vhost::wordpress # - apache::vhost::simplemachine # - apache::vhost::cgi TODO # - apache::vhost::modperl TODO # - apache::vhost::modpython TODO # - apache::vhost::modrails TODO # - apache::vhost::webapp (abstract) # vhost_mode: which option is chosen 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::static( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $allow_override = 'None', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent' ){ # create webdir apache::vhost::webdir{$name: ensure => $ensure, path => $path, owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, } # create vhost configuration file apache::vhost{$name: ensure => $ensure, path => $path, template_mode => 'static', vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, allow_override => $allow_override, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, ssl_mode => $ssl_mode, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, mod_security => false, } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::standard( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $template_mode = 'php', $owner = root, $group = apache, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent' ){ apache::vhost::phpdirs{"${name}": ensure => $ensure, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, } # create webdir apache::vhost::webdir{$name: ensure => $ensure, path => $path, owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, } # create vhost configuration file apache::vhost{$name: ensure => $ensure, path => $path, template_mode => $template_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, ssl_mode => $ssl_mode, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, mod_security => $mod_security, } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::joomla( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent', $manage_config = true, $config_webwriteable = false, $manage_directories = true ){ include apache::joomla $documentroot = $path ? { 'absent' => $operatingsystem ? { openbsd => "/var/www/htdocs/${name}/www", default => "/var/www/vhosts/${name}/www" }, default => "${path}/www" } # create vhost configuration file apache::vhost::php::webapp{$name: ensure => $ensure, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, path => $path, template_mode => 'php_joomla', owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, mod_security => $mod_security, ssl_mode => $ssl_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, manage_directories => $manage_directories, managed_directories => [ "$documentroot/administrator/backups", "$documentroot/administrator/components", "$documentroot/administrator/language", "$documentroot/administrator/modules", "$documentroot/administrator/templates", "$documentroot/components", "$documentroot/images", "$documentroot/language", "$documentroot/media", "$documentroot/modules", "$documentroot/plugins", "$documentroot/templates", "$documentroot/cache", "$documentroot/administrator/cache" ], manage_config => $manage_config, config_webwriteable => $config_webwriteable, config_file => 'configuration.php', } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::wordpress( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'FileInfo', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent', $manage_config = true, $config_webwriteable = false, $manage_directories = true ){ $documentroot = $path ? { 'absent' => $operatingsystem ? { openbsd => "/var/www/htdocs/${name}/www", default => "/var/www/vhosts/${name}/www" }, default => "${path}/www" } # create vhost configuration file apache::vhost::php::webapp{$name: ensure => $ensure, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, path => $path, template_mode => 'php_wordpress', owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, mod_security => $mod_security, ssl_mode => $ssl_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, manage_directories => $manage_directories, managed_directories => "$documentroot/wp-content", manage_config => $manage_config, config_webwriteable => $config_webwriteable, config_file => 'wp-config.php', } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::simplemachine( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent', $manage_config = true, $config_webwriteable = false, $manage_directories = true ){ $documentroot = $path ? { 'absent' => $operatingsystem ? { openbsd => "/var/www/htdocs/${name}/www", default => "/var/www/vhosts/${name}/www" }, default => "${path}/www" } # create vhost configuration file apache::vhost::php::webapp{$name: ensure => $ensure, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, path => $path, template_mode => 'php_simplemachine', owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, mod_security => $mod_security, ssl_mode => $ssl_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, manage_directories => $manage_directories, managed_directories => "$documentroot/attachements", manage_config => $manage_config, config_webwriteable => $config_webwriteable, config_file => 'Settings.php', } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::drupal( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent', $manage_cron = true ){ $documentroot = $path ? { 'absent' => $operatingsystem ? { openbsd => "/var/www/htdocs/${name}/www", default => "/var/www/vhosts/${name}/www" }, default => "${path}/www" } if $manage_cron { file{"/etc/cron.d/drupal_cron_${name}": content => "0 * * * * apache wget -O - -q -t 1 http://${doamin}/cron.php\n", owner => root, group => 0, mode => 0644; } } # create vhost configuration file apache::vhost::php::webapp{$name: ensure => $ensure, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, path => $path, template_mode => 'php_drupal', owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, mod_security => $mod_security, ssl_mode => $ssl_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, manage_directories => false, manage_config => false, } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::modperl( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $cgi_binpath = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent' ){ # cgi_bin path case $cgi_binpath { 'absent': { $real_path = $path ? { 'absent' => $operatingsystem ? { openbsd => "/var/www/htdocs/${name}", default => "/var/www/vhosts/${name}" }, default => "${path}" } $real_cgi_binpath = "${real_path}/cgi-bin" } default: { $real_cgi_binpath = $cgi_binpath } } file{$real_cgi_binpath: ensure => directory, owner => $documentroot_owner, group => $documentroot_group, mode => $documentroot_mode; } # create webdir apache::vhost::webdir{$name: ensure => $ensure, path => $path, owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, } # create vhost configuration file apache::vhost{$name: ensure => $ensure, path => $path, template_mode => 'perl', vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, cgi_binpath => $real_cgi_binpath, ssl_mode => $ssl_mode, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, mod_security => $mod_security, } } # run_mode: # - normal: nothing special (*default*) # - itk: apache is running with the itk module # and run_uid and run_gid are used as vhost users # run_uid: the uid the vhost should run as with the itk module # run_gid: the gid the vhost should run as with the itk module define apache::vhost::php::webapp( $ensure = present, $domain = 'absent', $domainalias = 'absent', $server_admin = 'absent', $path = 'absent', $template_mode, $owner = root, $group = 0, $documentroot_owner = apache, $documentroot_group = 0, $documentroot_mode = 0750, $run_mode = 'normal', $run_uid = 'absent', $run_gid = 'absent', $allow_override = 'None', $php_upload_tmp_dir = 'absent', $php_session_save_path = 'absent', $do_includes = false, $options = 'absent', $additional_options = 'absent', $default_charset = 'absent', $mod_security = true, $ssl_mode = false, $vhost_mode = 'template', $vhost_source = 'absent', $vhost_destination = 'absent', $htpasswd_file = 'absent', $htpasswd_path = 'absent', $manage_config = true, $config_file = 'absent', $config_webwriteable = false, $manage_directories = true, $managed_directories ){ if ($ensure != 'absent') { if $manage_directories { apache::file::rw{ $managed_directories : owner => $documentroot_owner, group => $documentroot_group, } } if $manage_config { if $config_file == 'absent' { fail("No config file defined for ${name} on ${fqdn}, if you'd like to manage the config, you have to add one!") } apache::vhost::file::documentrootfile{"configurationfile_${name}": documentroot => $documentroot, filename => $config_file, thedomain => $name, owner => $documentroot_owner, group => $documentroot_group, } if $config_webwriteable { Apache::Vhost::File::Documentrootfile["configurationfile_${name}"]{ mode => 0660, } } else { Apache::Vhost::File::Documentrootfile["configurationfile_${name}"]{ mode => 0440, } } } } # create vhost configuration file apache::vhost::php::standard{$name: ensure => $ensure, domain => $domain, domainalias => $domainalias, server_admin => $server_admin, path => $path, template_mode => $template_mode, owner => $owner, group => $group, documentroot_owner => $documentroot_owner, documentroot_group => $documentroot_group, documentroot_mode => $documentroot_mode, run_mode => $run_mode, run_uid => $run_uid, run_gid => $run_gid, allow_override => $allow_override, php_upload_tmp_dir => $php_upload_tmp_dir, php_session_save_path => $php_session_save_path, do_includes => $do_includes, options => $options, additional_options => $additional_options, default_charset => $default_charset, mod_security => $mod_security, ssl_mode => $ssl_mode, vhost_mode => $vhost_mode, vhost_source => $vhost_source, vhost_destination => $vhost_destination, htpasswd_file => $htpasswd_file, htpasswd_path => $htpasswd_path, } }