2020-12-28 22:53:53 +01:00
|
|
|
---
|
2020-12-10 22:11:37 +01:00
|
|
|
- hosts: tau.netz39.de
|
|
|
|
become: true
|
|
|
|
|
|
|
|
vars:
|
|
|
|
ansible_python_interpreter: /usr/bin/python3
|
|
|
|
|
2022-11-07 15:16:43 +01:00
|
|
|
data_dir: "/srv/data"
|
2022-06-29 00:14:44 +02:00
|
|
|
|
2022-10-26 18:56:20 +02:00
|
|
|
docker_registry_port: 5000 # this is the reg standard port
|
2023-04-06 18:17:03 +02:00
|
|
|
docker_registry_domain: "docker.netz39.de"
|
2022-01-20 10:03:24 +01:00
|
|
|
|
2022-06-25 20:31:20 +02:00
|
|
|
dokuwiki_domain: "wiki.netz39.de"
|
|
|
|
dokuwiki_port: 9005
|
2022-11-18 17:12:13 +01:00
|
|
|
# This container is pinned, because there are issues
|
|
|
|
# with backwards compatibility within the same tag!
|
|
|
|
dokuwiki_image: "bitnami/dokuwiki:20220731@sha256:989ab52cf2d2e0f84166e114ca4ce88f59546b8f6d34958905f8d81c18cbd759"
|
2022-06-25 20:31:20 +02:00
|
|
|
|
2023-04-30 20:04:37 +02:00
|
|
|
discord_invite_domain: discord.netz39.de
|
|
|
|
|
2020-12-10 22:11:37 +01:00
|
|
|
roles:
|
2022-12-12 18:53:03 +01:00
|
|
|
# role 'docker_setup' applied through group 'docker_host'
|
2020-12-28 22:53:53 +01:00
|
|
|
- role: apache
|
2022-06-19 19:55:50 +02:00
|
|
|
- role: penguineer.dehydrated_cron
|
2020-12-10 22:11:37 +01:00
|
|
|
|
|
|
|
tasks:
|
|
|
|
- name: Setup docker network
|
|
|
|
docker_network:
|
|
|
|
name: dockernet
|
|
|
|
driver: bridge
|
|
|
|
ipam_config:
|
|
|
|
- subnet: 192.168.0.0/24
|
|
|
|
gateway: 192.168.0.1
|
|
|
|
state: present
|
|
|
|
|
2021-03-10 10:54:44 +01:00
|
|
|
- name: Setup Dehydrated
|
|
|
|
include_role:
|
|
|
|
name: ansible-role-dehydrated
|
|
|
|
vars:
|
|
|
|
dehydrated_contact_email: "{{ server_admin }}"
|
|
|
|
dehydrated_domains:
|
|
|
|
- name: "testredmine.netz39.de"
|
|
|
|
deploy_challenge_hook: "/bin/systemctl restart apache2"
|
|
|
|
- name: "mysql.adm.netz39.de"
|
|
|
|
deploy_challenge_hook: "/bin/systemctl restart apache2"
|
2022-01-20 10:03:24 +01:00
|
|
|
- name: "{{ docker_registry_domain }}"
|
|
|
|
deploy_challenge_hook: "/bin/systemctl restart apache2"
|
2022-06-25 20:31:20 +02:00
|
|
|
- name: "{{ dokuwiki_domain }}"
|
|
|
|
deploy_challenge_hook: "/bin/systemctl restart apache2"
|
2023-04-30 20:04:37 +02:00
|
|
|
- name: "{{ discord_invite_domain }}"
|
|
|
|
deploy_challenge_hook: "/bin/systemctl restart apache2"
|
2021-03-10 10:54:44 +01:00
|
|
|
|
2020-12-10 22:11:37 +01:00
|
|
|
- name: Setup proxy site testredmine.netz39.de
|
|
|
|
include_role:
|
2022-10-23 22:55:09 +02:00
|
|
|
name: setup_http_site_proxy
|
2020-12-10 22:11:37 +01:00
|
|
|
vars:
|
|
|
|
site_name: testredmine.netz39.de
|
|
|
|
proxy_port: 9004
|
|
|
|
|
|
|
|
- name: Setup phpmyadmin
|
|
|
|
docker_container:
|
|
|
|
name: phpmyadmin
|
|
|
|
state: started
|
|
|
|
image: phpmyadmin:5.0
|
|
|
|
networks_cli_compatible: true
|
|
|
|
networks:
|
|
|
|
- name: dockernet
|
|
|
|
restart_policy: always
|
|
|
|
env:
|
2022-11-07 16:43:12 +01:00
|
|
|
TZ: "{{ timezone }}"
|
2020-12-10 22:11:37 +01:00
|
|
|
PMA_HOST: 192.168.0.1
|
|
|
|
MYSQL_ROOT_PASSWORD: "{{ mysql_root_pw }}"
|
|
|
|
PMA_ABSOLUTE_URI: "https://mysql.adm.netz39.de"
|
|
|
|
published_ports:
|
|
|
|
- 9001:80
|
|
|
|
|
|
|
|
- name: Setup proxy site mysql.adm.netz39.de
|
|
|
|
include_role:
|
2022-10-23 22:55:09 +02:00
|
|
|
name: setup_http_site_proxy
|
2020-12-10 22:11:37 +01:00
|
|
|
vars:
|
|
|
|
site_name: mysql.adm.netz39.de
|
|
|
|
proxy_port: 9001
|
2022-01-20 10:03:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: Check if Docker Registry auth dir exists
|
|
|
|
ansible.builtin.stat:
|
2022-06-29 00:14:44 +02:00
|
|
|
path: "{{ data_dir }}/registry/auth"
|
2022-01-20 10:03:24 +01:00
|
|
|
register: docker_dir
|
|
|
|
- name: Fail if docker registry data dir does not exist
|
|
|
|
ansible.builtin.fail:
|
|
|
|
msg: "Docker Registry auth dir is missing, please restore from the backup!"
|
|
|
|
when: not docker_dir.stat.exists
|
|
|
|
- name: Ensure the Docker Registry data directory exists
|
|
|
|
# This may not be part of the backup
|
|
|
|
file:
|
2022-06-29 00:14:44 +02:00
|
|
|
path: "{{ data_dir }}/registry/data"
|
2022-01-29 12:41:34 +01:00
|
|
|
state: directory
|
2022-10-26 22:20:36 +02:00
|
|
|
mode: "0755"
|
2022-01-20 10:03:24 +01:00
|
|
|
|
|
|
|
- name: Setup Docker Registry Container
|
|
|
|
docker_container:
|
|
|
|
name: registry
|
|
|
|
image: "registry:2"
|
|
|
|
pull: true
|
|
|
|
state: started
|
|
|
|
restart_policy: unless-stopped
|
|
|
|
detach: yes
|
|
|
|
ports:
|
2022-10-26 18:56:20 +02:00
|
|
|
- 127.0.0.1:{{ docker_registry_port }}:{{ docker_registry_port }}
|
2022-01-20 10:03:24 +01:00
|
|
|
env:
|
2022-11-07 16:43:12 +01:00
|
|
|
TZ: "{{ timezone }}"
|
2022-01-20 10:03:24 +01:00
|
|
|
REGISTRY_HTTP_HOST: "https://{{ docker_registry_domain }}"
|
|
|
|
REGISTRY_AUTH_HTPASSWD_REALM: "Netz39 Docker Registry"
|
|
|
|
REGISTRY_AUTH_HTPASSWD_PATH: "/auth/htpasswd"
|
|
|
|
volumes:
|
2022-10-26 18:56:20 +02:00
|
|
|
- "{{ data_dir }}/registry/data:/var/lib/registry:rw"
|
|
|
|
- "{{ data_dir }}/registry/auth:/auth:rw"
|
2022-01-20 10:03:24 +01:00
|
|
|
|
|
|
|
- name: Setup proxy site for the Docker Registry
|
|
|
|
include_role:
|
2022-10-23 22:55:09 +02:00
|
|
|
name: setup_http_site_proxy
|
2022-01-20 10:03:24 +01:00
|
|
|
vars:
|
|
|
|
site_name: "{{ docker_registry_domain }}"
|
|
|
|
proxy_port: "{{ docker_registry_port }}"
|
2022-06-25 20:31:20 +02:00
|
|
|
|
|
|
|
|
|
|
|
- name: Check if Dokuwiki data dir exists
|
|
|
|
ansible.builtin.stat:
|
2022-06-29 00:14:44 +02:00
|
|
|
path: "{{ data_dir }}/dokuwiki"
|
2022-06-25 20:31:20 +02:00
|
|
|
register: dokuwiki_dir
|
|
|
|
- name: Fail if Dokuwiki data dir does not exist
|
|
|
|
ansible.builtin.fail:
|
|
|
|
msg: "Dokuwiki data dir is missing, please restore from the backup!"
|
|
|
|
when: not dokuwiki_dir.stat.exists
|
|
|
|
|
|
|
|
- name: Set correct user for Dokuwiki data
|
|
|
|
ansible.builtin.file:
|
2022-06-29 00:14:44 +02:00
|
|
|
path: "{{ data_dir }}/dokuwiki"
|
2022-06-25 20:31:20 +02:00
|
|
|
owner: "1001" # According to container config
|
|
|
|
recurse: yes
|
|
|
|
|
|
|
|
- name: Setup Dokuwiki Container
|
|
|
|
docker_container:
|
|
|
|
name: dokuwiki
|
|
|
|
image: "{{ dokuwiki_image }}"
|
|
|
|
pull: true
|
|
|
|
state: started
|
|
|
|
restart_policy: unless-stopped
|
|
|
|
detach: yes
|
|
|
|
ports:
|
2022-10-26 18:56:20 +02:00
|
|
|
- 127.0.0.1:{{ dokuwiki_port }}:{{ 8080 }}
|
2022-06-25 20:31:20 +02:00
|
|
|
# env: No env here, because we copy the data
|
|
|
|
# and the container will never be created from scratch.
|
|
|
|
volumes:
|
2022-10-26 18:56:20 +02:00
|
|
|
- "{{ data_dir }}/dokuwiki:/bitnami/dokuwiki:rw"
|
2022-11-07 16:43:12 +01:00
|
|
|
env:
|
|
|
|
TZ: "{{ timezone }}"
|
2022-06-25 20:31:20 +02:00
|
|
|
|
|
|
|
- name: Setup proxy site for Dokuwiki
|
|
|
|
include_role:
|
2022-10-23 22:55:09 +02:00
|
|
|
name: setup_http_site_proxy
|
2022-06-25 20:31:20 +02:00
|
|
|
vars:
|
|
|
|
site_name: "{{ dokuwiki_domain }}"
|
|
|
|
proxy_port: "{{ dokuwiki_port }}"
|
2022-08-28 13:17:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
- name: Setup container for secondary FFMD DNS
|
|
|
|
docker_container:
|
|
|
|
name: bind9-md-freifunk-net
|
2022-11-18 12:24:48 +01:00
|
|
|
image: "ffmd/bind9-md-freifunk-net:2022111601"
|
2022-08-28 13:17:04 +02:00
|
|
|
pull: true
|
|
|
|
state: started
|
|
|
|
restart_policy: unless-stopped
|
|
|
|
detach: yes
|
|
|
|
ports:
|
2022-10-26 18:56:20 +02:00
|
|
|
- "53:53/udp"
|
2022-11-07 16:43:12 +01:00
|
|
|
env:
|
|
|
|
TZ: "{{ timezone }}"
|
2023-04-30 20:04:37 +02:00
|
|
|
|
|
|
|
- name: Setup forwarding for Discord invite
|
|
|
|
include_role:
|
|
|
|
name: setup-http-site-forward
|
|
|
|
vars:
|
|
|
|
site_name: "{{ discord_invite_domain }}"
|
|
|
|
forward_to: "https://discord.com/invite/8FcDvAf"
|