diff --git a/manifests/site.pp b/manifests/site.pp index 6ceddc3905125f8584b2617da652915062ada8b9..92dbbaa6ee06a8db96541b7bd6ee82e153a0afef 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -23,15 +23,6 @@ node 'd-group' { ensure => 'installed', } - # Required by d-group.se, which more or less runs a dev environment - # in production. - class { 'python': - ensure => 'latest', - version => 'python3', - dev => 'latest', - virtualenv => 'latest', - pip => 'latest', - } class { '::letsencrypt': email => 'webb@d-group.se', @@ -41,11 +32,6 @@ node 'd-group' { # ensure => 'latest', # } - file { ['/var/log/apache2', '/var/log/django', ]: - ensure => 'directory', - group => 'www-data', - mode => '0775', - } class {'apache': default_vhost => false, @@ -55,80 +41,32 @@ node 'd-group' { serveradmin => 'webb@d-group.se', } + file { '/var/log/apache2': + ensure => 'directory', + group => 'www-data', + mode => '0775', + } + $root = '/var/www/d-group.se' - ensure_packages (['python-certbot-apache'], { ensure => installed }) - letsencrypt::certonly { 'd-group.se': - domains => [ 'd-group.se', ], # 'www.d-group.se', 'domd.nu', + dgroup::dgroup { 'd-group.se': + root => $root, + } + + # TODO certs for below + # 'domd.nu', # 'www.domd.nu', 'admin.d-group.se', # 'wiki.d-group.se', 'www.xn--dmd-sna.nu', # 'xn--dmd-sna.nu', 'tentakravallen.se', # 'www.tentakravallen.se', ], - manage_cron => true, - suppress_cron_output => true, - cron_hour => '4', - cron_minute => '17', - plugin => 'apache', - # cron_success_command => '/bin/systemctl reload apache2.service', - } - - apache::vhost { 'd-group.se-non-ssl': - servername => 'd-group.se', - ssl => false, - port => 80, - redirect_status => 'permanent', - redirect_dest => 'https://d-group.se/', - docroot => '/var/www/d-group.se', - # before => Letsencrypt::Certonly['d-group certs'], - } - - apache::vhost { 'd-group.se': - # default_vhost => true, - servername => 'd-group.se', - ssl => true, - port => 443, - serveraliases => ['www.d-group.se'], - docroot => "${root}/d-group.se", - ssl_cert => '/etc/letsencrypt/live/d-group.se/fullchain.pem', - ssl_key => '/etc/letsencrypt/live/d-group.se/privkey.pem', - require => Letsencrypt::Certonly['d-group.se'], - wsgi_script_aliases => { '/' => "${root}/d-group.se/dgroup/wsgi_production.py", }, - wsgi_daemon_process => 'd-group.se', - wsgi_daemon_process_options => { - # TODO this doesn't work. Currently path is modified in script - # python-home => '/var/www/d-group.se/d-group.se/.venv', - python-path => '/var/www/d-group.se/d-group.se:/var/www/d-group.se/d-group.se/.venv/lib/python3.6/site-packages', - }, - # wsgi_process_group => 'd-group.se', - error_log_file => 'error.log', - access_log_file => 'access.log', - directories => [ - { 'path' => "${root}/d-group.se/static_files", - 'order' => 'deny,allow', - 'allow' => 'from all', }, - { 'path' => "${root}/d-group.se/dgroup", }, - { 'path' => "${root}/d-group.se/wsgi_production.py", - 'order' => 'deny,allow', - 'allow' => 'from all', - 'provider' => 'files', - }, - ], - aliases => [ - { alias => '/robots.txt', path => "${root}/d-group.se/static_files/robots.txt" }, - { alias => '/favicon.ico', path => "${root}/d-group.se/static_files/favicon.ico" }, - { alias => '/static', path => "${root}/d-group.se/static_files/" }, - { alias => '/application/views/default/static', path => "${root}/d-group.se/static_files/" }, - ] - - } - - dgroup::codeigniter { 'admin.d-group.se': + + dgroup::codeigniter { 'admin.d-group.se': root => $root, - } + } - dgroup::simple { 'wiki.d-group.se': + dgroup::simple { 'wiki.d-group.se': root => $root, - } + } # dgroup::simple { 'domd.nu': @@ -143,12 +81,6 @@ node 'd-group' { # serveraliases => [ 'www.tentakravallen.se', ], # } - include ::apache::mod::rewrite - include ::apache::mod::php - class { '::apache::mod::wsgi': - package_name => 'libapache2-mod-wsgi-py3', - mod_path => 'mod_wsgi.so', - } } node 'liufs' { diff --git a/modules/dgroup/manifests/dgroup.pp b/modules/dgroup/manifests/dgroup.pp new file mode 100644 index 0000000000000000000000000000000000000000..d9bd4ee557b23a4784204b64f8c0396633774370 --- /dev/null +++ b/modules/dgroup/manifests/dgroup.pp @@ -0,0 +1,93 @@ +# Module for main d-group.se site. +# Some form of django/wsgi dev environment running in production. +# Hopefully someone packages it better, and updates this file +# accordingly. +define dgroup::dgroup ( + $root, + $site = $name, +) { + + class { 'python': + ensure => 'latest', + version => 'python3', + dev => 'latest', + virtualenv => 'latest', + pip => 'latest', + } + + + file { '/var/log/django': + ensure => 'directory', + group => 'www-data', + mode => '0775', + } + + ensure_packages (['python-certbot-apache'], { ensure => installed }) + letsencrypt::certonly { $site: + domains => [ $site, ], # "www.${site}" + manage_cron => true, + suppress_cron_output => true, + cron_hour => '4', + cron_minute => '17', + plugin => 'apache', + # cron_success_command => '/bin/systemctl reload apache2.service', + } + + apache::vhost { "${site}-non-ssl": + servername => $site, + ssl => false, + port => 80, + redirect_status => 'permanent', + redirect_dest => "https://${site}/", + docroot => $root, + # before => Letsencrypt::Certonly['d-group certs'], + } + + apache::vhost { $site: + # default_vhost => true, + servername => $site, + ssl => true, + port => 443, + serveraliases => ["www.${site}"], + docroot => "${root}/${site}", + ssl_cert => "/etc/letsencrypt/live/${site}/fullchain.pem", + ssl_key => "/etc/letsencrypt/live/${site}/privkey.pem", + require => Letsencrypt::Certonly[$site], + wsgi_script_aliases => { '/' => "${root}/${site}/dgroup/wsgi_production.py", }, + wsgi_daemon_process => 'd-group.se', + wsgi_daemon_process_options => { + # TODO this doesn't work. Currently path is modified in script + # python-home => '/var/www/d-group.se/d-group.se/.venv', + python-path => "${root}/${site}:${root}/${site}/.venv/lib/python3.6/site-packages", + }, + # wsgi_process_group => 'd-group.se', + error_log_file => 'error.log', + access_log_file => 'access.log', + directories => [ + { 'path' => "${root}/${site}/static_files", + 'order' => 'deny,allow', + 'allow' => 'from all', }, + { 'path' => "${root}/${site}/dgroup", }, + { 'path' => "${root}/${site}/wsgi_production.py", + 'order' => 'deny,allow', + 'allow' => 'from all', + 'provider' => 'files', + }, + ], + aliases => [ + { alias => '/robots.txt', path => "${root}/${site}/static_files/robots.txt" }, + { alias => '/favicon.ico', path => "${root}/${site}/static_files/favicon.ico" }, + { alias => '/static', path => "${root}/${site}/static_files/" }, + { alias => '/application/views/default/static', path => "${root}/${site}/static_files/" }, + ] + } + + + require ::apache::mod::rewrite + require ::apache::mod::php + class { '::apache::mod::wsgi': + package_name => 'libapache2-mod-wsgi-py3', + mod_path => 'mod_wsgi.so', + } + +}