class websites::setup { # Configure Apache Web Server $apache_www_folder = "/var/www/data" $apache_sites_folder = "/var/sites" $apache_error_dest = "http://${domain}/missing.html" $drupal_folder = "${apache_www_folder}/drupal" $default_vhost = $apache_server_name ? { '': { $hostname } default: { $apache_server_name } } # Include apache include apache # The needed apache modules apache::module { "rewrite": ensure => present, } # Images folder file { "${apache_www_folder}/images": ensure => directory, recurse => true, purge => true, force => true, owner => "root", group => "root", # This mode will also apply to files from the source directory mode => 0644, # Puppet will automatically set +x for directories source => "puppet://$server/files/apache/htdocs/images", } # Web index file { "${apache_www_folder}/index.html": ensure => present, owner => "root", group => "root", mode => 0644, source => "puppet://$server/files/apache/htdocs/index.html", } # Missing page file { "${apache_www_folder}/missing.html": ensure => present, owner => "root", group => "root", mode => 0644, source => "puppet://$server/files/apache/htdocs/missing.html", } # Default vhost: can just be applied on the defining host apache::site { "$default_vhost": server_alias => "$domain", docroot => "${apache_www_folder}", } # We have to use 'zzz-erro' so it will be the last matched vhost apache::site { "erro": source => true, docroot => '/var/www/erro', filename => 'zzz-erro', } # Index page for erro file { "/var/www/erro/index.html": ensure => "${apache_www_folder}/index.html", owner => "root", group => "root", force => true, require => File["/var/www/erro"], } # TODO: this is temporary: remove when all nodes have applied it file { "/var/www/erro/missing.html": ensure => absent, require => File["/var/www/erro"], } } class websites::hosting inherits websites::setup { # Include the needed classes for website hosting include drupal include gitweb include trac include websvn include moin include ikiwiki include pmwiki } class websites::hosting::admin inherits websites::setup { # Include the needed classes for admin interfaces include trac include gitweb }