summaryrefslogtreecommitdiff
path: root/ansible/plays
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-09-10 08:57:06 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-09-10 08:57:06 +0200
commitb296d7987e5558b11bdf16dced7b1f139bea0499 (patch)
treebbbab8ccdec3c7ca116850a2558f498fb8a9ae4d /ansible/plays
parent46934bb125c6b3fc53b1669cb5131f9c2f06ac0e (diff)
downloadinfra-b296d7987e5558b11bdf16dced7b1f139bea0499.tar.gz
infra-b296d7987e5558b11bdf16dced7b1f139bea0499.tar.bz2
infra-b296d7987e5558b11bdf16dced7b1f139bea0499.tar.xz
infra-b296d7987e5558b11bdf16dced7b1f139bea0499.zip
o Moving mw and malabaricus to plays/.
Diffstat (limited to 'ansible/plays')
-rw-r--r--ansible/plays/malabaricus.yml48
-rw-r--r--ansible/plays/mw.yml33
-rw-r--r--ansible/plays/templates/mw/LocalSettings.php195
-rw-r--r--ansible/plays/templates/mw/sites-enabled/000-default.conf60
-rw-r--r--ansible/plays/templates/nginx/malabaricus/sites-enabled/default163
-rw-r--r--ansible/plays/templates/nginx/malabaricus/sites-enabled/minio35
6 files changed, 534 insertions, 0 deletions
diff --git a/ansible/plays/malabaricus.yml b/ansible/plays/malabaricus.yml
new file mode 100644
index 0000000..26587ad
--- /dev/null
+++ b/ansible/plays/malabaricus.yml
@@ -0,0 +1,48 @@
+- hosts:
+ - malabaricus
+ roles:
+ - minio-server
+ - role: nginx
+ nginx__template:
+ - sites-enabled/default
+ - sites-enabled/minio
+ ipv6: "[::]:80"
+ server_name: minio.trygvis.io
+
+# Nextcloud
+- hosts:
+ - malabaricus
+ tags: nextcloud
+ become: yes
+ tasks:
+ - apt:
+ name:
+ - php-imagick
+ tags: packages
+ - file:
+ path: /var/www/html/nextcloud/occ
+ mode: ug=rx,o=
+ owner: www-data
+ group: www-data
+ - copy:
+ dest: /etc/php/7.0/fpm/conf.d/99-nextcloud.ini
+ content: |
+ opcache.enable=1
+ opcache.enable_cli=1
+ opcache.interned_strings_buffer=8
+ opcache.max_accelerated_files=10000
+ opcache.memory_consumption=128
+ opcache.save_comments=1
+ opcache.revalidate_freq=1
+ - lineinfile:
+ path: /etc/php/7.0/fpm/pool.d/www.conf
+ regexp: 'env[{{ item.key }}]'
+ line: 'env[{{ item.key }}] = {{ item.value }}'
+ with_dict:
+ HOSTNAME: '$HOSTNAME'
+ PATH: /usr/sbin:/usr/bin:/sbin:/bin
+ TMP: /tmp
+ TMPDIR: /tmp
+ TEMP: /tmp
+
+# TODO: comply with warnings from https://malabaricus.trygvis.io/settings/admin/overview
diff --git a/ansible/plays/mw.yml b/ansible/plays/mw.yml
new file mode 100644
index 0000000..daf3b05
--- /dev/null
+++ b/ansible/plays/mw.yml
@@ -0,0 +1,33 @@
+---
+- hosts:
+ - mw
+ vars_files:
+ - secrets.yml
+ roles:
+ - timezone
+ - lusers
+ - superusers
+ - role: apache
+ apache__template_prefix: mw/
+ apache__template: mw/sites-enabled/000-default.conf
+ - role: mediawiki
+ mediawiki__local_settings: mw/LocalSettings.php
+ mediawiki__wgDBserver: "10.0.3.1"
+ mediawiki__wgDBname: "mediawiki"
+ mediawiki__wgDBuser: "mediawiki"
+ mediawiki__wgDBpassword: "{{ mediawiki_secrets.mediawiki_password }}"
+ mediawiki__wgSecretKey: "{{ mediawiki_secrets.secret_key }}"
+ mediawiki__wgUpgradeKey: "{{ mediawiki_secrets.upgrade_key }}"
+
+ tasks:
+ - name: unix-machine
+ import_role: name=unix-machine
+ tags: unix-machine
+
+ - name: lxc-machine
+ import_role: name=lxc-machine
+ tags: lxc-machine
+
+# - name: mw-backend
+# include_role: name=mw-backend
+# tags: mw-backend
diff --git a/ansible/plays/templates/mw/LocalSettings.php b/ansible/plays/templates/mw/LocalSettings.php
new file mode 100644
index 0000000..bb113cc
--- /dev/null
+++ b/ansible/plays/templates/mw/LocalSettings.php
@@ -0,0 +1,195 @@
+<?php
+# This file was automatically generated by the MediaWiki 1.27.4
+# installer. If you make manual changes, please keep track in case you
+# need to recreate them later.
+
+# Protect against web entry
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+## Uncomment this to disable output compression
+# $wgDisableOutputCompression = true;
+
+$wgSitename = "Trygvis's notes to self";
+$wgMetaNamespace = "Project";
+
+## The URL base path to the directory containing the wiki;
+## defaults for all runtime URL paths are based off of this.
+## For more information on customizing the URLs
+## (like /w/index.php/Page_title to /wiki/Page_title) please see:
+## https://www.mediawiki.org/wiki/Manual:Short_URL
+$wgScriptPath = "/w";
+$wgArticlePath = "/wiki/$1";
+
+## The protocol and server name to use in fully-qualified URLs
+$wgServer = "https://mw.trygvis.io";
+
+## The URL path to static resources (images, scripts, etc.)
+$wgResourceBasePath = $wgScriptPath;
+
+## The URL path to the logo. Make sure you change this from the default,
+## or else you'll overwrite your logo when you upgrade!
+$wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
+
+## UPO means: this is also a user preference option
+
+$wgEnableEmail = true;
+$wgEnableUserEmail = true; # UPO
+
+$wgEmergencyContact = "postmaster@trygvis.io";
+$wgPasswordSender = "postmaster@trygvis.io";
+
+$wgEnotifUserTalk = true; # UPO
+$wgEnotifWatchlist = true; # UPO
+$wgEmailAuthentication = true;
+
+## Database settings
+$wgDBtype = "postgres";
+$wgDBserver = "{{ mediawiki__wgDBserver }}";
+$wgDBname = "{{ mediawiki__wgDBname }}";
+$wgDBuser = "{{ mediawiki__wgDBuser }}";
+$wgDBpassword = "{{ mediawiki__wgDBpassword }}";
+
+# Postgres specific settings
+$wgDBport = "5432";
+$wgDBmwschema = "public";
+
+## Shared memory settings
+$wgMainCacheType = CACHE_ANYTHING;
+$wgMemCachedServers = [];
+
+## To enable image uploads, make sure the 'images' directory
+## is writable, then set this to true:
+$wgEnableUploads = true;
+#$wgUseImageMagick = true;
+#$wgImageMagickConvertCommand = "/usr/bin/convert";
+$wgFileExtensions[] = 'pdf';
+
+# InstantCommons allows wiki to use images from https://commons.wikimedia.org
+$wgUseInstantCommons = true;
+
+## If you use ImageMagick (or any other shell command) on a
+## Linux server, this will need to be set to the name of an
+## available UTF-8 locale
+$wgShellLocale = "en_US.utf8";
+
+## Set $wgCacheDirectory to a writable directory on the web server
+## to make your wiki go slightly faster. The directory should not
+## be publically accessible from the web.
+#$wgCacheDirectory = "$IP/cache";
+
+# Site language code, should be one of the list in ./languages/data/Names.php
+$wgLanguageCode = "en";
+
+$wgSecretKey = "{{ mediawiki__wgSecretKey }}";
+
+# Changing this will log out all existing sessions.
+$wgAuthenticationTokenVersion = "1";
+
+# Site upgrade key. Must be set to a string (default provided) to turn on the
+# web installer while LocalSettings.php is in place
+$wgUpgradeKey = "{{ mediawiki__wgUpgradeKey }}";
+
+## For attaching licensing metadata to pages, and displaying an
+## appropriate copyright notice / icon. GNU Free Documentation
+## License and Creative Commons licenses are supported so far.
+$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
+$wgRightsUrl = "https://creativecommons.org/publicdomain/zero/1.0/";
+$wgRightsText = "Creative Commons Zero (Public Domain)";
+$wgRightsIcon = "$wgResourceBasePath/resources/assets/licenses/cc-0.png";
+
+# Path to the GNU diff3 utility. Used for conflict resolution.
+$wgDiff3 = "/usr/bin/diff3";
+
+# The following permissions were set based on your choice in the installer
+$wgGroupPermissions['*']['createaccount'] = false;
+$wgGroupPermissions['*']['edit'] = false;
+
+## Default skin: you can change the default skin. Use the internal symbolic
+## names, ie 'vector', 'monobook':
+$wgDefaultSkin = "vector";
+
+# Enabled skins.
+# The following skins were automatically enabled:
+
+wfLoadExtension( 'Scribunto' );
+$wgScribuntoDefaultEngine = 'luastandalone';
+
+wfLoadExtension("SemanticScribunto");
+wfLoadExtension('WikiEditor');
+wfLoadExtension( 'CodeEditor' );
+# Enables link and table wizards by default but still allows users to
+# disable them in preferences
+$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
+
+# Displays the Preview and Changes tabs
+$wgDefaultUserOptions['wikieditor-preview'] = 1;
+
+# Displays the Publish and Cancel buttons on the top right side
+$wgDefaultUserOptions['wikieditor-publish'] = 1;
+
+$wgScribuntoUseCodeEditor = true;
+
+wfLoadSkin( 'MonoBook' );
+wfLoadSkin( 'Timeless' );
+wfLoadSkin( 'Vector' );
+
+wfLoadExtension( 'Cite' );
+wfLoadExtension( 'ParserFunctions' );
+
+# End of automatically generated settings.
+# Add more configuration options below.
+
+# Debian specific generated settings
+# Use system mimetypes
+$wgMimeTypeFile = '/etc/mime.types';
+# Load legacy extensions
+if ( is_file( "/etc/mediawiki-extensions/extensions.php" ) ) {
+ include "/etc/mediawiki-extensions/extensions.php";
+}
+# Add a "powered by Debian" footer icon
+$wgFooterIcons['poweredby']['debian'] = [
+ "src" => "/w/resources/assets/debian/poweredby_debian_1x.png",
+ "url" => "https://www.debian.org/",
+ "alt" => "Powered by Debian",
+ "srcset" =>
+ "/w/resources/assets/debian/poweredby_debian_1_5x.png 1.5x, " .
+ "/w/resources/assets/debian/poweredby_debian_2x.png 2x",
+];
+# End Debian specific generated settings
+# Add more configuration options below.
+
+$wgUseCategoryBrowser = true;
+
+// Define constants for my additional namespaces.
+define("NS_CHIP", 3000); // This MUST be even.
+define("NS_CHIP_TALK", 3001); // This MUST be the following odd integer.
+define("NS_BOARD", 3002); // This MUST be even.
+define("NS_BOARD_TALK", 3003); // This MUST be the following odd integer.
+
+enableSemantics( 'https://mw.trygvis.io/wiki/', true );
+
+$smwgShowFactbox = SMW_FACTBOX_NONEMPTY;
+
+// Add "Chip" namespace
+$wgExtraNamespaces[NS_CHIP] = "Chip";
+$wgExtraNamespaces[NS_CHIP_TALK] = "Chip_talk"; // Note underscores in the namespace name.
+$wgContentNamespaces[] = NS_CHIP;
+$smwgNamespacesWithSemanticLinks[NS_CHIP] = true;
+
+$wgExtraNamespaces[NS_BOARD] = "Board";
+$wgExtraNamespaces[NS_BOARD_TALK] = "Board_talk"; // Note underscores in the namespace name.
+$wgContentNamespaces[] = NS_BOARD;
+$smwgNamespacesWithSemanticLinks[NS_BOARD] = true;
+
+# https://www.mediawiki.org/wiki/Manual:$wgSMTP
+$wgSMTP = array('host' => '10.0.3.1', 'auth' => false);
+
+wfLoadExtension( 'Interwiki' );
+// To grant sysops permissions to edit interwiki data
+$wgGroupPermissions['sysop']['interwiki'] = true;
+$wgEnableScaryTranscluding = true;
+
+$wgShowExceptionDetails = true;
+$wgShowDBErrorBacktrace = true;
diff --git a/ansible/plays/templates/mw/sites-enabled/000-default.conf b/ansible/plays/templates/mw/sites-enabled/000-default.conf
new file mode 100644
index 0000000..ceed9b9
--- /dev/null
+++ b/ansible/plays/templates/mw/sites-enabled/000-default.conf
@@ -0,0 +1,60 @@
+# Based on /etc/apache2/conf-available/mediawiki.conf
+
+<VirtualHost *:80>
+ ServerName mw.trygvis.io
+
+ ServerAdmin webmaster@trygvis.io
+ DocumentRoot /var/www/mw.trygvis.io
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+ Alias /w /opt/mediawiki/mediawiki
+ Alias /wiki /opt/mediawiki/mediawiki/index.php
+ RedirectMatch permanent ^/$ /wiki/Main_Page
+
+<Directory /opt/mediawiki/mediawiki/>
+ Options +FollowSymLinks
+ AllowOverride All
+ <IfVersion >= 2.3>
+ Require all granted
+ </IfVersion>
+ <IfVersion < 2.3>
+ order allow,deny
+ allow from all
+ </IfVersion>
+</Directory>
+
+# some directories must be protected
+<Directory /opt/mediawiki/mediawiki/config>
+ Options -FollowSymLinks
+ AllowOverride None
+ <IfModule mod_php7.c>
+ php_admin_flag engine off
+ </IfModule>
+ <IfModule mod_php5.c>
+ php_admin_flag engine off
+ </IfModule>
+</Directory>
+<Directory /opt/mediawiki/mediawiki/images>
+ Options -FollowSymLinks
+ AllowOverride None
+ <IfModule mod_php7.c>
+ php_admin_flag engine off
+ </IfModule>
+ <IfModule mod_php5.c>
+ php_admin_flag engine off
+ </IfModule>
+</Directory>
+<Directory /opt/mediawiki/mediawiki/upload>
+ Options -FollowSymLinks
+ AllowOverride None
+ <IfModule mod_php7.c>
+ php_admin_flag engine off
+ </IfModule>
+ <IfModule mod_php5.c>
+ php_admin_flag engine off
+ </IfModule>
+</Directory>
+</VirtualHost>
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/ansible/plays/templates/nginx/malabaricus/sites-enabled/default b/ansible/plays/templates/nginx/malabaricus/sites-enabled/default
new file mode 100644
index 0000000..7bb9d9a
--- /dev/null
+++ b/ansible/plays/templates/nginx/malabaricus/sites-enabled/default
@@ -0,0 +1,163 @@
+##
+# You should look at the following URL's in order to grasp a solid understanding
+# of Nginx configuration files in order to fully unleash the power of Nginx.
+# https://www.nginx.com/resources/wiki/start/
+# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
+# https://wiki.debian.org/Nginx/DirectoryStructure
+#
+# In most cases, administrators will remove this file from sites-enabled/ and
+# leave it as reference inside of sites-available where it will continue to be
+# updated by the nginx packaging team.
+#
+# This file will automatically load configuration files provided by other
+# applications, such as Drupal or Wordpress. These applications will be made
+# available underneath a path with that package name, such as /drupal8.
+#
+# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
+##
+
+upstream php-handler {
+# include snippets/fastcgi-php.conf;
+# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
+ server unix:/var/run/php/php7.0-fpm.sock;
+}
+
+# Default server configuration
+#
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name malabaricus.trygvis.io;
+ # enforce https
+ return 301 https://$server_name$request_uri;
+}
+
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name malabaricus.trygvis.io;
+
+ ssl_certificate /etc/letsencrypt/live/malabaricus.trygvis.io/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/malabaricus.trygvis.io/privkey.pem;
+
+ root /var/www/html/nextcloud;
+
+
+ location = /robots.txt {
+ allow all;
+ log_not_found off;
+ access_log off;
+ }
+
+ # The following 2 rules are only needed for the user_webfinger app.
+ # Uncomment it if you're planning to use this app.
+ #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
+ #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
+
+
+ location = /.well-known/carddav {
+ return 301 $scheme://$host/remote.php/dav;
+ }
+ location = /.well-known/caldav {
+ return 301 $scheme://$host/remote.php/dav;
+ }
+ location ~ ^/.well-known/acme-challenge {
+ allow all;
+ }
+
+ # set max upload size
+ client_max_body_size 512M;
+ fastcgi_buffers 64 4K;
+
+ # Enable gzip but do not remove ETag headers
+ gzip on;
+ gzip_vary on;
+ gzip_comp_level 4;
+ gzip_min_length 256;
+ gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
+ gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
+
+ location / {
+ rewrite ^ /index.php$request_uri;
+ }
+
+ location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
+ deny all;
+ }
+ location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
+ deny all;
+ }
+
+ location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
+ fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param PATH_INFO $fastcgi_path_info;
+ fastcgi_param HTTPS on;
+ #Avoid sending the security headers twice
+ fastcgi_param modHeadersAvailable true;
+ fastcgi_param front_controller_active true;
+ fastcgi_pass php-handler;
+ fastcgi_intercept_errors on;
+ fastcgi_request_buffering off;
+ }
+
+ location ~ ^/(?:updater|ocs-provider)(?:$|/) {
+ try_files $uri/ =404;
+ index index.php;
+ }
+
+ # Adding the cache control header for js and css files
+ # Make sure it is BELOW the PHP block
+ location ~ \.(?:css|js|woff2?|svg|gif)$ {
+ try_files $uri /index.php$request_uri;
+ add_header Cache-Control "public, max-age=15778463";
+ # Add headers to serve security related headers (It is intended to
+ # have those duplicated to the ones above)
+ # Before enabling Strict-Transport-Security headers please read into
+ # this topic first.
+ # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
+ #
+ # WARNING: Only add the preload option once you read about
+ # the consequences in https://hstspreload.org/. This option
+ # will add the domain to a hardcoded list that is shipped
+ # in all major browsers and getting removed from this list
+ # could take several months.
+ add_header X-Content-Type-Options nosniff;
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Robots-Tag none;
+ add_header X-Download-Options noopen;
+ add_header X-Permitted-Cross-Domain-Policies none;
+ add_header Referrer-Policy no-referrer;
+
+ # Optional: Don't log access to assets
+ access_log off;
+ }
+
+ location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
+ try_files $uri /index.php$request_uri;
+ # Optional: Don't log access to other assets
+ access_log off;
+ }
+}
+
+
+# Virtual Host configuration for example.com
+#
+# You can move that to a different file under sites-available/ and symlink that
+# to sites-enabled/ to enable it.
+#
+#server {
+# listen 80;
+# listen [::]:80;
+#
+# server_name example.com;
+#
+# root /var/www/example.com;
+# index index.html;
+#
+# location / {
+# try_files $uri $uri/ =404;
+# }
+#}
diff --git a/ansible/plays/templates/nginx/malabaricus/sites-enabled/minio b/ansible/plays/templates/nginx/malabaricus/sites-enabled/minio
new file mode 100644
index 0000000..9855e49
--- /dev/null
+++ b/ansible/plays/templates/nginx/malabaricus/sites-enabled/minio
@@ -0,0 +1,35 @@
+# vim: filetype=jinja
+
+server {
+{% if ipv6 is defined %}
+ listen {{ ipv6 }};
+{% endif %}
+{% if ipv4 is defined %}
+ listen {{ ipv4 }};
+{% endif %}
+{% if server_name is defined %}
+ server_name {{ server_name }};
+{% else %}
+ server_name _;
+{% endif %}
+
+ ignore_invalid_headers off;
+ # Allow any size file to be uploaded.
+ # Set to a value such as 1000m; to restrict file size to a specific value
+ client_max_body_size 0;
+ # To disable buffering
+ proxy_buffering off;
+
+ root /var/www/html;
+
+ location / {
+ try_files $uri @proxy;
+ }
+
+ location @proxy {
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass http://127.0.0.1:9000;
+ }
+}