diff --git a/host_vars/webserver b/host_vars/webserver index 706af93e1418634333552f30ef614d820775a250..7ba5b54c765aaf8199b8ce3fe8d8c4cba6c722d9 100644 --- a/host_vars/webserver +++ b/host_vars/webserver @@ -21,6 +21,8 @@ letsencrypt_tos_sha256: 6373439b9f29d67a5cd4d18cbc7f264809342dbf21cb2ba2fc7588df letsencrypt_mail: verwaltung@warpzone.ms webserver_domains: + - "auth" + - "alerta" - "gitlab" - "infra" - "infra-test" @@ -32,6 +34,7 @@ webserver_domains: - "proxy.jabber-test" - "ldap" - "mattermost" + - "md" - "pad" - "wiki" - "www" diff --git a/webserver/docker_alerta/handlers/main.yml b/webserver/docker_alerta/handlers/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..57d4fb785e9c699dbaa9faf5697c8cea5d410b81 --- /dev/null +++ b/webserver/docker_alerta/handlers/main.yml @@ -0,0 +1,7 @@ +--- + +- name: restart alerta docker + docker_service: + project_src: /srv/alerta/ + state: present + restarted: yes diff --git a/webserver/docker_alerta/tasks/main.yml b/webserver/docker_alerta/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..516956facf40e00d4b8888f0cc01aef5165813d0 --- /dev/null +++ b/webserver/docker_alerta/tasks/main.yml @@ -0,0 +1,33 @@ +--- + +- include: ../functions/get_secret.yml + with_items: + - { path: /srv/alerta/alerta_secret_key, length: 24 } + - { path: /srv/alerta/alerta_oauth_client_secret, length: -1 } + - { path: /srv/alerta/telegram_token, length: -1 } + - { path: /srv/alerta/telegram_chatid, length: -1 } + + +- name: create folder struct for alerta + file: + path: "{{ item }}" + state: "directory" + with_items: + - /srv/alerta/ + - /srv/alerta/db/ + + +- name: Konfig-Dateien erstellen + template: + src: "{{ item }}" + dest: "/srv/alerta/{{ item }}" + with_items: + - docker-compose.yml + - alertad.conf + - config.js + notify: restart alerta docker + +- name: start alerta docker + docker_service: + project_src: /srv/alerta/ + state: present diff --git a/webserver/docker_alerta/templates/alertad.conf b/webserver/docker_alerta/templates/alertad.conf new file mode 100644 index 0000000000000000000000000000000000000000..3eddced90c8fe1fc1782c0a93ea587fc313bf17f --- /dev/null +++ b/webserver/docker_alerta/templates/alertad.conf @@ -0,0 +1,28 @@ + +DEBUG = False +PLUGINS = [ 'blackout','normalise','reject','telegram' ] + +SENDER_API_ALLOW = 'ON' +BLACKOUT_DURATION = 43200 +ALLOWED_ENVIRONMENTS = [ 'warpzone' ] + +KEYCLOAK_URL = 'https://auth.warpzone.ms' +KEYCLOAK_REALM = 'master' +OAUTH2_CLIENT_ID = 'alerta-ui' +OAUTH2_CLIENT_SECRET = '{{ alerta_oauth_client_secret }}' +ALLOWED_KEYCLOAK_ROLES = [ '*' ] + +SECRET_KEY = '{{ alerta_secret_key }}' +DATABASE_URL = 'postgres://alerta:alerta@db:5432/alerta' + +AUTH_REQUIRED = True +ADMIN_USERS = [ '' ] + +CUSTOMER_VIEWS = False + +TELEGRAM_TOKEN = '{{ telegram_token }}' +TELEGRAM_CHAT_ID = '{{ telegram_chatid }}' +TELEGRAM_WEBHOOK_URL = 'https://alerta.warpzone.ms/api/webhooks/telegram' + + + diff --git a/webserver/docker_alerta/templates/config.js b/webserver/docker_alerta/templates/config.js new file mode 100644 index 0000000000000000000000000000000000000000..6882bfc8b89298220e7aa35dd3f9aa41c88ca16d --- /dev/null +++ b/webserver/docker_alerta/templates/config.js @@ -0,0 +1,18 @@ +'use strict'; + +angular.module('config', []) + .constant('config', { + 'endpoint' : "https://"+window.location.hostname+"/api", + 'provider' : "keycloak", // google, github, gitlab, saml2 or basic + 'client_id' : "alerta-ui", + 'keycloak_url': "https://auth.warpzone.ms", + 'keycloak_realm': "master", + + 'dates': { + 'shortTime' : 'HH:MM', + 'mediumDate': 'd.MM.yyyy', + 'longDate' : 'EEEE, MMMM d, yyyy HH:MM ss.sss (Z)' // Tuesday, April 26, 2016 13:39:43.987 (+0100) + }, + + 'refresh_interval': 30000 // Auto-refresh interval set to 30 seconds +}); diff --git a/webserver/docker_alerta/templates/docker-compose.yml b/webserver/docker_alerta/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..9bbffc908448e621bfb81805051f2cbd46a7509c --- /dev/null +++ b/webserver/docker_alerta/templates/docker-compose.yml @@ -0,0 +1,31 @@ + + +version: "3" + +services: + + app: + + image: alerta/alerta-web:5.2.4 + restart: always + ports: + - 0.0.0.0:42008:8080 + volumes: + - /srv/alerta/alertad.conf:/app/alertad.conf + - /srv/alerta/config.js:/web/config.js + depends_on: + - db + environment: + INSTALL_PLUGINS: "normalise,telegram" + + + db: + + image: postgres + restart: always + volumes: + - /srv/alerta/db:/var/lib/postgresql/data + environment: + POSTGRES_DB: alerta + POSTGRES_USER: alerta + POSTGRES_PASSWORD: alerta diff --git a/webserver/docker_hackmd/tasks/main.yml b/webserver/docker_hackmd/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..f24578eb5b3e8cde1e5cc3d69c9e1072a7b8771f --- /dev/null +++ b/webserver/docker_hackmd/tasks/main.yml @@ -0,0 +1,32 @@ +--- + +- include: ../functions/get_secret.yml + with_items: + - { path: /srv/hackmd/mysql_root_pass, length: 24 } + - { path: /srv/hackmd/mysql_user_pass, length: 12 } + - { path: /srv/hackmd/hackmd_session_secret, length: 32 } + - { path: /srv/ldap/secret/ldap_readonly_pass, length: -1 } + + +- name: create folder struct for hackmd + file: + path: "{{ item }}" + state: "directory" + with_items: + - /srv/hackmd/ + - /srv/hackmd/db/ + + +- name: Konfig-Dateien erstellen + template: + src: "{{ item }}" + dest: "/srv/hackmd/{{ item }}" + with_items: + - docker-compose.yml + - mysql-utf8.cnf + + +- name: start hackmd docker + docker_service: + project_src: /srv/hackmd/ + state: present diff --git a/webserver/docker_hackmd/templates/docker-compose.yml b/webserver/docker_hackmd/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..6ec70100c938a9c94404c6eb3ebe0e78a2441ac6 --- /dev/null +++ b/webserver/docker_hackmd/templates/docker-compose.yml @@ -0,0 +1,43 @@ + +version: "3" + +services: + + app: + + image: hackmdio/hackmd:1.2.0 + restart: always + depends_on: + - db + ports: + - 127.0.0.1:42007:3000 + environment: + HMD_DB_URL: "mysql://hackmd:{{ mysql_user_pass }}@db:3306/hackmd" + CMD_SESSION_SECRET: "{{ hackmd_session_secret }}" + CMD_ALLOW_ANONYMOUS: "true" + CMD_ALLOW_ANONYMOUS_EDITS: "true" + CMD_DEFAULT_PERMISSION: "freely" + CMD_LDAP_URL: "ldap://{{ ldap_ip_ext }}:389" + CMD_LDAP_BINDDN: "cn=readonly,dc=warpzone,dc=ms" + CMD_LDAP_BINDCREDENTIALS: "{{ ldap_readonly_pass }}" + CMD_LDAP_SEARCHBASE: "dc=warpzone,dc=ms" + CMD_LDAP_SEARCHFILTER: "(&(uid={% raw %}{{username}}{% endraw %})(objectClass=inetOrgPerson)(memberof=CN=active,OU=groups,DC=warpzone,DC=ms))" + CMD_LDAP_SEARCHATTRIBUTES: "uid" + CMD_LDAP_USERIDFIELD: "uid" + CMD_LDAP_USERNAMEFIELD: "uid" + CMD_EMAIL: "false" + + + db: + + image: mariadb:10 + volumes: + - /srv/hackmd/db:/var/lib/mysql + - /srv/hackmd/mysql-utf8.cnf:/etc/mysql/conf.d/utf8.cnf + environment: + MYSQL_ROOT_PASSWORD: "{{ mysql_root_pass }}" + MYSQL_PASSWORD: "{{ mysql_user_pass }}" + MYSQL_DATABASE: "hackmd" + MYSQL_USER: "hackmd" + + \ No newline at end of file diff --git a/webserver/docker_hackmd/templates/mysql-utf8.cnf b/webserver/docker_hackmd/templates/mysql-utf8.cnf new file mode 100644 index 0000000000000000000000000000000000000000..367210a9c7b5d70ae9f27b5946bb448eb0b111b9 --- /dev/null +++ b/webserver/docker_hackmd/templates/mysql-utf8.cnf @@ -0,0 +1,11 @@ +[client] +default-character-set=utf8 + +[mysql] +default-character-set=utf8 + + +[mysqld] +collation-server = utf8_unicode_ci +init-connect='SET NAMES utf8' +character-set-server = utf8 diff --git a/webserver/docker_keycloak/tasks/main.yml b/webserver/docker_keycloak/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..7d3b2ed06fff9118649541202e62f323e75c5457 --- /dev/null +++ b/webserver/docker_keycloak/tasks/main.yml @@ -0,0 +1,29 @@ +--- + +- include: ../functions/get_secret.yml + with_items: + - { path: /srv/keycloak/keycloak_admin_pass, length: 24 } + - { path: /srv/keycloak/postgres_user_pass, length: 12 } + + +- name: create folder struct for keycloak + file: + path: "{{ item }}" + state: "directory" + with_items: + - /srv/keycloak/ + - /srv/keycloak/db/ + + +- name: Konfig-Dateien erstellen + template: + src: "{{ item }}" + dest: "/srv/keycloak/{{ item }}" + with_items: + - docker-compose.yml + notify: restart keycloak docker + +- name: start keycloak docker + docker_service: + project_src: /srv/keycloak/ + state: present diff --git a/webserver/docker_keycloak/templates/docker-compose.yml b/webserver/docker_keycloak/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..6eb7c32f461ba1e2c3abc3bdcd74f5dc07b77421 --- /dev/null +++ b/webserver/docker_keycloak/templates/docker-compose.yml @@ -0,0 +1,35 @@ + + +version: "3" + +services: + + + app: + + image: jboss/keycloak:4.0.0.Final + restart: always + ports: + - 127.0.0.1:42009:8080 + depends_on: + - db + environment: + KEYCLOAK_USER: "admin" + KEYCLOAK_PASSWORD: "{{ keycloak_admin_pass }}" + DB_VENDOR: "POSTGRES" + DB_ADDR: "db" + DB_DATABASE: "keycloak" + DB_USER: "keycloak" + DB_PASSWORD: "{{ postgres_user_pass }}" + PROXY_ADDRESS_FORWARDING: "true" + + db: + + image: postgres + restart: always + volumes: + - /srv/keycloak/db:/var/lib/postgresql/data + environment: + POSTGRES_DB: keycloak + POSTGRES_USER: keycloak + POSTGRES_PASSWORD: "{{ postgres_user_pass }}" diff --git a/webserver/main.yml b/webserver/main.yml index fdc9588d52976d1927af8ddc1fbc2f793c1e45a3..509f26c5cf4cad2b6793c3992d1f04d579699d2d 100644 --- a/webserver/main.yml +++ b/webserver/main.yml @@ -7,12 +7,15 @@ - { role: ../common/docker, tags: docker } - { role: nginx, tags: nginx } - { role: openvpn, tags: openvpn } + - { role: docker_alerta, tags: alerta } - { role: docker_dokuwiki, tags: dokuwiki } - { role: docker_etherpad, tags: etherpad } - { role: docker_gitlab, tags: gitlab } + - { role: docker_hackmd, tags: hackmd } - { role: docker_jabber, tags: jabber } - { role: docker_jabber_test, tags: jabber_test } - { role: docker_ldap, tags: ldap } + - { role: docker_keycloak, tags: keycloak } - { role: docker_matterbridge, tags: matterbridge } - { role: docker_warpinfra, tags: warpinfra } - { role: docker_warpinfratest, tags: warpinfratest } diff --git a/webserver/nginx/includes/alerta b/webserver/nginx/includes/alerta new file mode 100644 index 0000000000000000000000000000000000000000..faba043e1540bea75ee389ee4ae2d93dbba81f48 --- /dev/null +++ b/webserver/nginx/includes/alerta @@ -0,0 +1,12 @@ + + location / { + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + 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:42008/; + proxy_redirect off; + + } diff --git a/webserver/nginx/includes/auth b/webserver/nginx/includes/auth new file mode 100644 index 0000000000000000000000000000000000000000..74801f2f86b402969a6940e047cf633327e25a66 --- /dev/null +++ b/webserver/nginx/includes/auth @@ -0,0 +1,12 @@ + + location / { + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + 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:42009/; + proxy_redirect off; + + } diff --git a/webserver/nginx/includes/md b/webserver/nginx/includes/md new file mode 100644 index 0000000000000000000000000000000000000000..72cb0aa1572473a5a643b741b3716c2239c94320 --- /dev/null +++ b/webserver/nginx/includes/md @@ -0,0 +1,12 @@ + + location / { + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + 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:42007/; + proxy_redirect off; + + }