diff --git a/group_vars/nginx.yml b/group_vars/nginx.yml index 774fa0e1669d090c00471fd3dc672c6cc8533067..e28685411e2d5cab3d65718b2e4f3e04e32c9ae1 100644 --- a/group_vars/nginx.yml +++ b/group_vars/nginx.yml @@ -28,5 +28,5 @@ glob_nginx: default_ssl_domain: crans.org real_ip_from: - "172.16.0.0/16" - - "2a0c:700:0:2::/64" + - "fd00:0:0:10::/64" deploy_robots_file: false diff --git a/group_vars/wiki.yml b/group_vars/wiki.yml new file mode 100644 index 0000000000000000000000000000000000000000..310fe0492090e6ddf16a8c62529518db976b1045 --- /dev/null +++ b/group_vars/wiki.yml @@ -0,0 +1,37 @@ +--- +glob_moinmoin: + main: false + +loc_nginx: + service_name: wiki + ssl: [] + servers: + - server_name: "{{ query('ldap', 'ip', ansible_hostname, 'adm') | ipwrap + [ansible_hostname, ansible_hostname + '.adm.crans.org'] }}" + default: true + access_log: "/var/log/nginx/wiki.log combined" + error_log: "/var/log/nginx/wiki.error.log" + additional_params: + - "rewrite ^/$ $scheme://wiki.crans.org/PageAccueil" + - "client_max_body_size 15M" + + locations: + - filter: "/wiki" + params: + - "alias /var/local/wiki/htdocs/" + + - filter: "/robots.txt" + params: + - "alias /var/local/wiki/robots.txt" + + - filter: "/favicon.ico" + params: + - "/var/local/wiki/favicon.ico" + + - filter: "/www-sitemap.xml" + params: + - "alias /var/local/wiki/www-sitemap.xml" + + - filter: "/" + params: + - "uwsgi_pass unix:///var/run/uwsgi/app/moinmoin/socket" + - "include uwsgi_params" diff --git a/host_vars/kiwi.adm.crans.org.yml b/host_vars/kiwi.adm.crans.org.yml index 162f19448fa5423c41fe5ae04aa910bb07cd0c3f..5ed645966c4b1338786bb376e9a9df161e32da20 100644 --- a/host_vars/kiwi.adm.crans.org.yml +++ b/host_vars/kiwi.adm.crans.org.yml @@ -31,5 +31,5 @@ to_backup: read_only: "yes", } -moinmoin: +loc_moinmoin: main: true diff --git a/host_vars/sputnik.adm.crans.org b/host_vars/sputnik.adm.crans.org deleted file mode 100644 index 2878a5780c0ce3ee4cdb26aea6b7cec14a69a7ec..0000000000000000000000000000000000000000 --- a/host_vars/sputnik.adm.crans.org +++ /dev/null @@ -1,5 +0,0 @@ ---- -loc_slapd: - ip: "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv4 | first }}" - replica: true - replica_rid: 4 diff --git a/host_vars/sputnik.adm.crans.org.yml b/host_vars/sputnik.adm.crans.org.yml index 6b2473f11c2035e2b83290955e8c50a82fe70d6c..c0aa02b811dddb551d1ebf8c79967f7d8d5fd580 100644 --- a/host_vars/sputnik.adm.crans.org.yml +++ b/host_vars/sputnik.adm.crans.org.yml @@ -23,5 +23,67 @@ to_backup: hosts_allow: ["zephir.adm.crans.org", "10.231.136.6", "172.31.0.1"], } -moinmoin: +loc_slapd: + ip: "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv4 | first }}" + replica: true + replica_rid: 4 + +loc_moinmoin: main: false + +loc_certbot: + - dns_rfc2136_server: '172.16.10.147' + dns_rfc2136_name: certbot_adm_challenge. + dns_rfc2136_secret: "{{ vault.certbot_adm_dns_secret }}" + mail: root@crans.org + certname: adm.crans.org + domains: "*.adm.crans.org" + - dns_rfc2136_server: '172.16.10.147' + dns_rfc2136_name: certbot_challenge. + dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" + mail: root@crans.org + certname: crans.org + domains: "git2.crans.org, status.crans.org, wiki.crans.org" + +loc_nginx: + service_name: wiki + ssl: + - name: adm.crans.org + cert: /etc/letsencrypt/live/adm.crans.org/fullchain.pem + cert_key: /etc/letsencrypt/live/adm.crans.org/privkey.pem + trusted_cert: /etc/letsencrypt/live/adm.crans.org/chain.pem + - name: crans.org + cert: /etc/letsencrypt/live/crans.org/fullchain.pem + cert_key: /etc/letsencrypt/live/crans.org/privkey.pem + trusted_cert: /etc/letsencrypt/live/crans.org/chain.pem + servers: + - server_name: + - "wiki2.crans.org" + ssl : "crans.org" + access_log: "/var/log/nginx/wiki.log combined" + error_log: "/var/log/nginx/wiki.error.log" + additional_params: + - "rewrite ^/$ $scheme://wiki2.crans.org/PageAccueil" + - "client_max_body_size 15M" + + locations: + - filter: "/wiki" + params: + - "alias /var/local/wiki/htdocs/" + + - filter: "/robots.txt" + params: + - "alias /var/local/wiki/robots.txt" + + - filter: "/favicon.ico" + params: + - "/var/local/wiki/favicon.ico" + + - filter: "/www-sitemap.xml" + params: + - "alias /var/local/wiki/www-sitemap.xml" + + - filter: "/" + params: + - "uwsgi_pass unix:///var/run/uwsgi/app/moinmoin/socket" + - "include uwsgi_params" diff --git a/hosts b/hosts index a42cb4f7c28958926b640eda71d93898b5b07f92..59945c46dd3741427ec433a2aa1aebef8746179a 100644 --- a/hosts +++ b/hosts @@ -20,6 +20,9 @@ tealc.adm.crans.org [belenios] belenios.adm.crans.org +[certbot] +sputnik.adm.crans.org + [certbot:children] dovecot git @@ -93,6 +96,7 @@ mailman reverseproxy roundcube thelounge +wiki [ntp_server] charybde.adm.crans.org @@ -136,6 +140,10 @@ daniel.adm.crans.org jack.adm.crans.org sam.adm.crans.org +[wiki] +kiwi.adm.crans.org +sputnik.adm.crans.org + [crans_routeurs:children] # dhcp TODO: Really needed ? # keepalived diff --git a/plays/moinmoin.yml b/plays/moinmoin.yml index b9c63047eda6f6184692dcb947ec76d51fecead0..35207855f2aa8048a14445b27a68c26e3d595130 100755 --- a/plays/moinmoin.yml +++ b/plays/moinmoin.yml @@ -1,6 +1,16 @@ #!/usr/bin/env ansible-playbook --- +- hosts: certbot:&wiki + vars: + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' + roles: + - certbot + # Deploy MoinMoin Wiki -- hosts: kiwi.adm.crans.org,soyouz.adm.crans.org,sputnik.adm.crans.org +- hosts: wiki + vars: + moinmoin: '{{ glob_moinmoin | default({}) | combine(loc_moinmoin | default({})) }}' + nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}' roles: - moinmoin + - nginx diff --git a/roles/moinmoin/handlers/main.yml b/roles/moinmoin/handlers/main.yml index ea116cb886562e67848a82f6512d06191fdbf9ca..ba46876d693c3d932eae4d3350bb74d9a0651d86 100644 --- a/roles/moinmoin/handlers/main.yml +++ b/roles/moinmoin/handlers/main.yml @@ -3,8 +3,3 @@ service: name: uwsgi state: restarted - -- name: Restart nginx - service: - name: nginx - state: restarted diff --git a/roles/moinmoin/tasks/main.yml b/roles/moinmoin/tasks/main.yml index 50049b0338bb0d5a8bd69af0660d3c80d788f24e..bef5dc5155c020e9f3de423e40c25a0719f17670 100644 --- a/roles/moinmoin/tasks/main.yml +++ b/roles/moinmoin/tasks/main.yml @@ -40,19 +40,6 @@ enabled: true state: started -- name: Configure nginx - template: - src: nginx/sites-available/wiki.j2 - dest: /etc/nginx/sites-available/wiki - notify: Restart nginx - -- name: Activate nginx site - file: - src: /etc/nginx/sites-available/wiki - dest: /etc/nginx/sites-enabled/wiki - state: link - notify: Restart nginx - - name: Indicate role in motd template: src: update-motd.d/05-service.j2 diff --git a/roles/moinmoin/templates/nginx/sites-available/wiki.j2 b/roles/moinmoin/templates/nginx/sites-available/wiki.j2 deleted file mode 100644 index 4c7482f094d71b7dbb05793526257b12007fe60a..0000000000000000000000000000000000000000 --- a/roles/moinmoin/templates/nginx/sites-available/wiki.j2 +++ /dev/null @@ -1,31 +0,0 @@ -{{ ansible_header | comment }} - -server { - listen 80; - listen [::]:80; - server_name wiki.adm.crans.org; - - access_log /var/log/nginx/wiki.log combined; - error_log /var/log/nginx/wiki.error.log; - - # Redirect to home page - rewrite ^/$ $scheme://wiki.crans.org/PageAccueil; - - # Limit uploads - client_max_body_size 15M; - - # MoinMoin paths - location /wiki/ { alias /var/local/wiki/htdocs/; } - location /robots.txt { alias /var/local/wiki/robots.txt; } - location /favicon.ico { alias /var/local/wiki/favicon.ico; } - location /www-sitemap.xml { alias /var/local/wiki/www-sitemap.xml; } - - location / { - uwsgi_pass unix:///var/run/uwsgi/app/moinmoin/socket; - include uwsgi_params; - } - - set_real_ip_from 172.16.10.0/24; - set_real_ip_from fd00:0:0:10::/64; - real_ip_header X-Real-Ip; -}