add discourse role
This commit is contained in:
parent
1b7de37101
commit
e19ee0b141
6 changed files with 121 additions and 0 deletions
|
@ -22,3 +22,4 @@ docker_node_labels:
|
||||||
seafile: "true"
|
seafile: "true"
|
||||||
freshrss: "true"
|
freshrss: "true"
|
||||||
pihole: "true"
|
pihole: "true"
|
||||||
|
discourse: "true"
|
||||||
|
|
|
@ -17,3 +17,4 @@
|
||||||
- {role: shephard, tags: shephard}
|
- {role: shephard, tags: shephard}
|
||||||
- {role: jitsi, tags: jitsi}
|
- {role: jitsi, tags: jitsi}
|
||||||
- {role: pihole, tags: pihole}
|
- {role: pihole, tags: pihole}
|
||||||
|
- {role: discourse, tags: discourse}
|
||||||
|
|
106
ansible/roles/discourse/docker-stack.yml.j2
Normal file
106
ansible/roles/discourse/docker-stack.yml.j2
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
# vi: ft=yaml
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
|
discourse:
|
||||||
|
|
||||||
|
services:
|
||||||
|
discourse-app:
|
||||||
|
image: tiredofit/discourse:latest
|
||||||
|
deploy:
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- "node.labels.discourse == true"
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.discourse.entrypoints=localsecure
|
||||||
|
- traefik.http.routers.discourse.rule=Host(`tuindersweijde.geokunis2.nl`)
|
||||||
|
- traefik.http.services.discourse.loadbalancer.server.port=3000
|
||||||
|
- traefik.http.routers.discourse.tls=true
|
||||||
|
- traefik.http.routers.discourse.tls.certresolver=letsencrypt
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /mnt/data/discourse/logs
|
||||||
|
target: /data/logs
|
||||||
|
- type: bind
|
||||||
|
source: /mnt/data/discourse/uploads
|
||||||
|
target: /data/uploads
|
||||||
|
- type: bind
|
||||||
|
source: /mnt/data/discourse/backups
|
||||||
|
target: /data/backups
|
||||||
|
environment:
|
||||||
|
- TIMEZONE=Europe/Amsterdam
|
||||||
|
- CONTAINER_NAME=discourse-app
|
||||||
|
|
||||||
|
- DB_HOST=discourse-db
|
||||||
|
- DB_NAME=discourse
|
||||||
|
- DB_USER=discourse
|
||||||
|
- DB_PASS={{ database_password }}
|
||||||
|
|
||||||
|
- REDIS_HOST=discourse-redis
|
||||||
|
- SITE_HOSTNAME=discourse.pim.kunis.nl
|
||||||
|
|
||||||
|
- SMTP_PORT=25
|
||||||
|
- SMTP_HOST=smtp.tweak.nl
|
||||||
|
|
||||||
|
- DEVELOPER_EMAILS=niels@kunis.nl
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
- discourse
|
||||||
|
|
||||||
|
discourse-db:
|
||||||
|
image: tiredofit/postgres:15-latest
|
||||||
|
deploy:
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- "node.labels.discourse == true"
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /mnt/data/discourse/database
|
||||||
|
target: /var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- TIMEZONE=Europe/Amsterdam
|
||||||
|
- CONTAINER_NAME=discourse-db
|
||||||
|
|
||||||
|
- POSTGRES_DB=discourse
|
||||||
|
- POSTGRES_USER=discourse
|
||||||
|
- POSTGRES_PASSWORD={{ database_password }}
|
||||||
|
- SUPERUSER_PASS={{ database_password }}
|
||||||
|
networks:
|
||||||
|
- discourse
|
||||||
|
|
||||||
|
discourse-redis:
|
||||||
|
image: tiredofit/redis:7
|
||||||
|
deploy:
|
||||||
|
placement:
|
||||||
|
constraints:
|
||||||
|
- "node.labels.discourse == true"
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /mnt/data/discourse/redis
|
||||||
|
target: /var/lib/redis
|
||||||
|
environment:
|
||||||
|
- TIMEZONE=Europe/Amsterdam
|
||||||
|
- CONTAINER_NAME=discourse-redis
|
||||||
|
networks:
|
||||||
|
- discourse
|
||||||
|
|
||||||
|
# discourse-db-backup:
|
||||||
|
# image: tiredofit/db-backup
|
||||||
|
# volumes:
|
||||||
|
# - ./dbbackup:/backup
|
||||||
|
# environment:
|
||||||
|
# - TIMEZONE=America/Vancouver
|
||||||
|
# - CONTAINER_NAME=discourse-db-backup
|
||||||
|
# - DB_HOST=discourse-db
|
||||||
|
# - DB_TYPE=postgres
|
||||||
|
# - DB_NAME=discourse
|
||||||
|
# - DB_USER=discourse
|
||||||
|
# - DB_PASS=password
|
||||||
|
# - DB_DUMP_FREQ=1440
|
||||||
|
# - DB_DUMP_BEGIN=0000
|
||||||
|
# - DB_CLEANUP_TIME=8640
|
||||||
|
# networks:
|
||||||
|
# - discourse
|
5
ansible/roles/discourse/tasks/main.yml
Normal file
5
ansible/roles/discourse/tasks/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
- name: Deploy Docker stack
|
||||||
|
docker_stack:
|
||||||
|
name: discourse
|
||||||
|
compose:
|
||||||
|
- "{{ lookup('template', '{{ role_path }}/docker-stack.yml.j2') | from_yaml }}"
|
7
ansible/roles/discourse/vars/main.yml
Normal file
7
ansible/roles/discourse/vars/main.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
database_password: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
32323538323136633363393961343364363933396431376437633361333232383938336531396537
|
||||||
|
3730306164303364363739376633633431383534646135380a326663396338396461623037613637
|
||||||
|
37666630333433393764373864346262383536656664343631386234386438333263626166363633
|
||||||
|
3735633562323361330a353735366562663631363634343438326562646533663839383932343263
|
||||||
|
38366538336466373733313130616330326238653966623037343336326132356565
|
|
@ -70,6 +70,7 @@ module "swarmpriv2" {
|
||||||
name = "swarmpriv2"
|
name = "swarmpriv2"
|
||||||
domain_name = "tf-swarmpriv2"
|
domain_name = "tf-swarmpriv2"
|
||||||
memory = 1024 * 3
|
memory = 1024 * 3
|
||||||
|
disk_size = 25
|
||||||
hypervisor_host = "jefke.hyp"
|
hypervisor_host = "jefke.hyp"
|
||||||
providers = {
|
providers = {
|
||||||
libvirt = libvirt.jefke
|
libvirt = libvirt.jefke
|
||||||
|
|
Reference in a new issue