June
f16f8697c2
Because of how Ansible local relative search paths work, the global "files" and "templates" directories need to be next to the playbooks. However its not intuitive to look into the "playbooks" directory to find the files and templates for a host. Therefore move them out of the "playbooks" directory into the root directory and add symlinks so everything still works. Similarly for local roles, they also need to be next to the playbooks. So for a nicer structure, move the "roles" directory out into the root directory as well and add a symlink so everything still works. Also see: https://docs.ansible.com/ansible/latest/playbook_guide/playbook_pathing.html#resolving-local-relative-paths https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#storing-and-finding-roles
158 lines
4.6 KiB
Django/Jinja
158 lines
4.6 KiB
Django/Jinja
---
|
|
{#
|
|
https://github.com/zammad/zammad-docker-compose
|
|
Docker Compose does not allow defining variables in the compose file (only in .env files), so we use Jinja variables instead
|
|
see https://github.com/zammad/zammad-docker-compose/blob/master/.env
|
|
#}
|
|
{%- set ELASTICSEARCH_VERSION = "8" | quote -%}
|
|
{%- set IMAGE_REPO = "ghcr.io/zammad/zammad" | quote -%}
|
|
{%- set MEMCACHE_SERVERS = "zammad-memcached:11211" | quote -%}
|
|
{%- set MEMCACHE_VERSION = "1.6-alpine" | quote -%}
|
|
{%- set POSTGRES_DB = "zammad_production" | quote -%}
|
|
{%- set POSTGRES_HOST = "zammad-postgresql" | quote -%}
|
|
{%- set POSTGRES_USER = "zammad" | quote -%}
|
|
{%- set POSTGRES_PASS = lookup("community.general.passwordstore", "noc/vm-secrets/chaosknoten/zammad/DB_PASSWORD", create=false, missing="error") | quote -%}
|
|
{%- set POSTGRES_PORT = "5432" | quote -%}
|
|
{%- set POSTGRES_VERSION = "15-alpine" | quote -%}
|
|
{%- set REDIS_URL = "redis://zammad-redis:6379" | quote -%}
|
|
{%- set REDIS_VERSION = "7-alpine" | quote -%}
|
|
{%- set RESTART = "always" | quote -%}
|
|
{%- set VERSION = "6" | quote -%}
|
|
x-shared:
|
|
zammad-service: &zammad-service
|
|
environment: &zammad-environment
|
|
MEMCACHE_SERVERS: {{ MEMCACHE_SERVERS }}
|
|
POSTGRESQL_DB: {{ POSTGRES_DB }}
|
|
POSTGRESQL_HOST: {{ POSTGRES_HOST }}
|
|
POSTGRESQL_USER: {{ POSTGRES_USER }}
|
|
POSTGRESQL_PASS: {{ POSTGRES_PASS }}
|
|
POSTGRESQL_PORT: {{ POSTGRES_PORT }}
|
|
REDIS_URL: {{ REDIS_URL }}
|
|
# Allow passing in these variables via .env:
|
|
AUTOWIZARD_JSON:
|
|
AUTOWIZARD_RELATIVE_PATH:
|
|
ELASTICSEARCH_ENABLED:
|
|
ELASTICSEARCH_HOST:
|
|
ELASTICSEARCH_PORT:
|
|
ELASTICSEARCH_SCHEMA:
|
|
ELASTICSEARCH_NAMESPACE:
|
|
ELASTICSEARCH_REINDEX:
|
|
ELASTICSEARCH_SSL_VERIFY:
|
|
NGINX_PORT:
|
|
NGINX_SERVER_NAME:
|
|
NGINX_SERVER_SCHEME: https
|
|
POSTGRESQL_DB_CREATE:
|
|
POSTGRESQL_OPTIONS:
|
|
RAILS_TRUSTED_PROXIES:
|
|
ZAMMAD_WEB_CONCURRENCY:
|
|
ZAMMAD_SESSION_JOBS:
|
|
ZAMMAD_PROCESS_SCHEDULED:
|
|
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:
|
|
image: {{ IMAGE_REPO }}:{{ VERSION }}
|
|
restart: {{ RESTART }}
|
|
volumes:
|
|
- zammad-storage:/opt/zammad/storage
|
|
- zammad-var:/opt/zammad/var
|
|
depends_on:
|
|
- zammad-memcached
|
|
- zammad-postgresql
|
|
- zammad-redis
|
|
|
|
services:
|
|
|
|
zammad-backup:
|
|
command: ["zammad-backup"]
|
|
depends_on:
|
|
- zammad-railsserver
|
|
- zammad-postgresql
|
|
entrypoint: /usr/local/bin/backup.sh
|
|
environment:
|
|
<<: *zammad-environment
|
|
BACKUP_TIME: "03:00"
|
|
HOLD_DAYS: "10"
|
|
TZ: Europe/Berlin
|
|
image: postgres:{{ POSTGRES_VERSION }}
|
|
restart: {{ RESTART }}
|
|
volumes:
|
|
- zammad-backup:/var/tmp/zammad
|
|
- zammad-storage:/opt/zammad/storage:ro
|
|
- zammad-var:/opt/zammad/var:ro
|
|
- ./scripts/backup.sh:/usr/local/bin/backup.sh:ro
|
|
|
|
zammad-elasticsearch:
|
|
image: bitnami/elasticsearch:{{ ELASTICSEARCH_VERSION }}
|
|
restart: {{ RESTART }}
|
|
volumes:
|
|
- elasticsearch-data:/bitnami/elasticsearch/data
|
|
|
|
zammad-init:
|
|
<<: *zammad-service
|
|
command: ["zammad-init"]
|
|
depends_on:
|
|
- zammad-postgresql
|
|
restart: on-failure
|
|
user: 0:0
|
|
volumes:
|
|
- zammad-storage:/opt/zammad/storage
|
|
- zammad-var:/opt/zammad/var
|
|
|
|
zammad-memcached:
|
|
command: memcached -m 256M
|
|
image: memcached:{{ MEMCACHE_VERSION }}
|
|
restart: {{ RESTART }}
|
|
|
|
zammad-nginx:
|
|
<<: *zammad-service
|
|
command: ["zammad-nginx"]
|
|
expose:
|
|
- "8080"
|
|
ports:
|
|
- "8080:8080"
|
|
depends_on:
|
|
- zammad-railsserver
|
|
volumes:
|
|
- zammad-var:/opt/zammad/var:ro # required for the zammad-ready check file
|
|
|
|
zammad-postgresql:
|
|
environment:
|
|
POSTGRES_DB: {{ POSTGRES_DB }}
|
|
POSTGRES_USER: {{ POSTGRES_USER }}
|
|
POSTGRES_PASSWORD: {{ POSTGRES_PASS }}
|
|
image: postgres:{{ POSTGRES_VERSION }}
|
|
restart: {{ RESTART }}
|
|
volumes:
|
|
- postgresql-data:/var/lib/postgresql/data
|
|
|
|
zammad-railsserver:
|
|
<<: *zammad-service
|
|
command: ["zammad-railsserver"]
|
|
|
|
zammad-redis:
|
|
image: redis:{{ REDIS_VERSION }}
|
|
restart: {{ RESTART }}
|
|
volumes:
|
|
- redis-data:/data
|
|
|
|
zammad-scheduler:
|
|
<<: *zammad-service
|
|
command: ["zammad-scheduler"]
|
|
volumes:
|
|
- /ansible_docker_compose/zammad-scheduler-database.yml:/opt/zammad/config/database.yml # workaround for connection pool issue
|
|
|
|
zammad-websocket:
|
|
<<: *zammad-service
|
|
command: ["zammad-websocket"]
|
|
|
|
volumes:
|
|
elasticsearch-data:
|
|
driver: local
|
|
postgresql-data:
|
|
driver: local
|
|
redis-data:
|
|
driver: local
|
|
zammad-backup:
|
|
driver: local
|
|
zammad-storage:
|
|
driver: local
|
|
zammad-var:
|
|
driver: local
|