feat(docker): Split docker compose to be deployed different services on different hosts. See host_vars of each host.
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
@@ -8,3 +8,19 @@ ansible_become_pass: "{{ vault.docker.host00.sudo }}"
|
|||||||
host:
|
host:
|
||||||
hostname: "docker-host00"
|
hostname: "docker-host00"
|
||||||
ip: "{{ ansible_host }}"
|
ip: "{{ ansible_host }}"
|
||||||
|
|
||||||
|
enable_nginx: true
|
||||||
|
enable_syncthing: true
|
||||||
|
enable_kuma: true
|
||||||
|
enable_plex: true
|
||||||
|
enable_arr: true
|
||||||
|
enable_prometheus: false
|
||||||
|
enable_grafana: false
|
||||||
|
enable_ddns_updater: true
|
||||||
|
enable_homeassistant: false
|
||||||
|
enable_stirling: true
|
||||||
|
enable_jellyfin: false
|
||||||
|
enable_paperless: true
|
||||||
|
enable_gitea: false
|
||||||
|
enable_changedetection: true
|
||||||
|
enable_calibre: false
|
||||||
|
|||||||
26
host_vars/docker-host02.yml
Normal file
26
host_vars/docker-host02.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
ansible_user: "{{ user }}"
|
||||||
|
ansible_host: 192.168.20.36
|
||||||
|
ansible_port: 22
|
||||||
|
ansible_ssh_private_key_file: "{{ pk_path }}"
|
||||||
|
ansible_become_pass: "{{ vault.docker.host02.sudo }}"
|
||||||
|
|
||||||
|
host:
|
||||||
|
hostname: "docker-host02"
|
||||||
|
ip: "{{ ansible_host }}"
|
||||||
|
|
||||||
|
enable_nginx: true
|
||||||
|
enable_syncthing: false
|
||||||
|
enable_kuma: false
|
||||||
|
enable_plex: false
|
||||||
|
enable_arr: false
|
||||||
|
enable_prometheus: false
|
||||||
|
enable_grafana: false
|
||||||
|
enable_ddns_updater: false
|
||||||
|
enable_homeassistant: true
|
||||||
|
enable_stirling: false
|
||||||
|
enable_jellyfin: true
|
||||||
|
enable_paperless: false
|
||||||
|
enable_gitea: true
|
||||||
|
enable_changedetection: false
|
||||||
|
enable_calibre: false
|
||||||
@@ -42,6 +42,7 @@ k3s-longhorn00
|
|||||||
k3s-longhorn01
|
k3s-longhorn01
|
||||||
k3s-longhorn02
|
k3s-longhorn02
|
||||||
docker-host00
|
docker-host00
|
||||||
|
docker-host02
|
||||||
|
|
||||||
[k3s_nodes]
|
[k3s_nodes]
|
||||||
k3s-server00
|
k3s-server00
|
||||||
@@ -65,9 +66,11 @@ ansible_ssh_common_args='-o ProxyCommand="ssh -p 22 -W %h:%p -q aya01"'
|
|||||||
|
|
||||||
[docker]
|
[docker]
|
||||||
docker-host00
|
docker-host00
|
||||||
|
docker-host02
|
||||||
|
|
||||||
[docker_host]
|
[docker_host]
|
||||||
docker-host00
|
docker-host00
|
||||||
|
docker-host02
|
||||||
|
|
||||||
[proxmox]
|
[proxmox]
|
||||||
aya01
|
aya01
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
- name: Copy docker compose file to target
|
- name: Copy docker compose file to target
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: "files/{{ item }}"
|
src: "templates/{{ item }}.j2"
|
||||||
dest: "/opt/docker/compose/{{ item }}"
|
dest: "/opt/docker/compose/{{ item }}"
|
||||||
owner: "{{ user }}"
|
owner: "{{ user }}"
|
||||||
group: "{{ user }}"
|
group: "{{ user }}"
|
||||||
|
|||||||
@@ -97,12 +97,3 @@
|
|||||||
opts: defaults,nolock
|
opts: defaults,nolock
|
||||||
state: mounted
|
state: mounted
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Ensure /opt/docker is mounted via NFS
|
|
||||||
ansible.posix.mount:
|
|
||||||
path: /opt/docker
|
|
||||||
src: 192.168.20.12:/opt/docker
|
|
||||||
fstype: nfs
|
|
||||||
opts: defaults,nolock
|
|
||||||
state: mounted
|
|
||||||
become: true
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
services:
|
services:
|
||||||
|
{% if enable_nginx %}
|
||||||
nginx:
|
nginx:
|
||||||
container_name: "nginx"
|
container_name: "nginx"
|
||||||
image: "jc21/nginx-proxy-manager:latest"
|
image: "jc21/nginx-proxy-manager:latest"
|
||||||
@@ -13,7 +14,9 @@ services:
|
|||||||
- "/opt/docker/config/nginx/data:/data"
|
- "/opt/docker/config/nginx/data:/data"
|
||||||
- "/opt/docker/config/nginx/letsencrypt:/etc/letsencrypt"
|
- "/opt/docker/config/nginx/letsencrypt:/etc/letsencrypt"
|
||||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_syncthing %}
|
||||||
syncthing:
|
syncthing:
|
||||||
image: syncthing/syncthing
|
image: syncthing/syncthing
|
||||||
container_name: syncthing
|
container_name: syncthing
|
||||||
@@ -33,7 +36,9 @@ services:
|
|||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
hostname: syncthing
|
hostname: syncthing
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_kuma %}
|
||||||
kuma:
|
kuma:
|
||||||
container_name: kuma
|
container_name: kuma
|
||||||
image: louislam/uptime-kuma:1
|
image: louislam/uptime-kuma:1
|
||||||
@@ -50,7 +55,9 @@ services:
|
|||||||
- "3001:3001"
|
- "3001:3001"
|
||||||
volumes:
|
volumes:
|
||||||
- "/opt/local/kuma/:/app/data"
|
- "/opt/local/kuma/:/app/data"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_plex %}
|
||||||
plex:
|
plex:
|
||||||
image: lscr.io/linuxserver/plex:latest
|
image: lscr.io/linuxserver/plex:latest
|
||||||
container_name: plex
|
container_name: plex
|
||||||
@@ -80,7 +87,9 @@ services:
|
|||||||
- "/media/series:/tv:ro"
|
- "/media/series:/tv:ro"
|
||||||
- "/media/movies:/movies:ro"
|
- "/media/movies:/movies:ro"
|
||||||
- "/media/songs:/music:ro"
|
- "/media/songs:/music:ro"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_arr %}
|
||||||
sonarr:
|
sonarr:
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
container_name: sonarr
|
container_name: sonarr
|
||||||
@@ -206,7 +215,9 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /opt/docker/config/qbit/config:/config
|
- /opt/docker/config/qbit/config:/config
|
||||||
- /media/docker/data/arr_downloads:/downloads
|
- /media/docker/data/arr_downloads:/downloads
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_prometheus %}
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus
|
image: prom/prometheus
|
||||||
container_name: prometheus
|
container_name: prometheus
|
||||||
@@ -222,7 +233,9 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /opt/docker/config/prometheus/:/etc/prometheus/
|
- /opt/docker/config/prometheus/:/etc/prometheus/
|
||||||
- prometheus_data:/prometheus/
|
- prometheus_data:/prometheus/
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_grafana %}
|
||||||
grafana:
|
grafana:
|
||||||
image: grafana/grafana-oss
|
image: grafana/grafana-oss
|
||||||
container_name: grafana
|
container_name: grafana
|
||||||
@@ -239,7 +252,9 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /media/docker/data/grafana/:/var/lib/grafana/
|
- /media/docker/data/grafana/:/var/lib/grafana/
|
||||||
- /opt/docker/config/grafana/config/:/etc/grafana/
|
- /opt/docker/config/grafana/config/:/etc/grafana/
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_ddns_updater %}
|
||||||
ddns-updater:
|
ddns-updater:
|
||||||
container_name: ddns-updater
|
container_name: ddns-updater
|
||||||
image: "ghcr.io/qdm12/ddns-updater"
|
image: "ghcr.io/qdm12/ddns-updater"
|
||||||
@@ -250,7 +265,9 @@ services:
|
|||||||
net: {}
|
net: {}
|
||||||
volumes:
|
volumes:
|
||||||
- "/opt/docker/config/ddns-updater/data/:/updater/data/"
|
- "/opt/docker/config/ddns-updater/data/:/updater/data/"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_homeassistant %}
|
||||||
homeassistant:
|
homeassistant:
|
||||||
container_name: homeassistant
|
container_name: homeassistant
|
||||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
image: "ghcr.io/home-assistant/home-assistant:stable"
|
||||||
@@ -268,7 +285,9 @@ services:
|
|||||||
- 4357:4357
|
- 4357:4357
|
||||||
- 5683:5683
|
- 5683:5683
|
||||||
- 5683:5683/udp
|
- 5683:5683/udp
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_stirling %}
|
||||||
stirling:
|
stirling:
|
||||||
container_name: stirling
|
container_name: stirling
|
||||||
image: frooodle/s-pdf:latest
|
image: frooodle/s-pdf:latest
|
||||||
@@ -277,7 +296,9 @@ services:
|
|||||||
- nginx
|
- nginx
|
||||||
networks:
|
networks:
|
||||||
net: {}
|
net: {}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_jellyfin %}
|
||||||
jellyfin:
|
jellyfin:
|
||||||
container_name: jellyfin
|
container_name: jellyfin
|
||||||
image: jellyfin/jellyfin
|
image: jellyfin/jellyfin
|
||||||
@@ -296,7 +317,9 @@ services:
|
|||||||
- /media/songs:/music:ro
|
- /media/songs:/music:ro
|
||||||
ports:
|
ports:
|
||||||
- "8096:8096"
|
- "8096:8096"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_paperless %}
|
||||||
paperless-broker:
|
paperless-broker:
|
||||||
container_name: paperless-broker
|
container_name: paperless-broker
|
||||||
image: docker.io/library/redis:7
|
image: docker.io/library/redis:7
|
||||||
@@ -353,7 +376,9 @@ services:
|
|||||||
- "PAPERLESS_URL=https://paperless.docker-host00.lulu.seyshiro.de"
|
- "PAPERLESS_URL=https://paperless.docker-host00.lulu.seyshiro.de"
|
||||||
- "PAPERLESS_TIME_ZONE=Europe/Berlin"
|
- "PAPERLESS_TIME_ZONE=Europe/Berlin"
|
||||||
- "PAPERLESS_OCR_LANGUAGE=deu"
|
- "PAPERLESS_OCR_LANGUAGE=deu"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_gitea %}
|
||||||
git:
|
git:
|
||||||
container_name: git
|
container_name: git
|
||||||
image: gitea/gitea:1.20.5-rootless
|
image: gitea/gitea:1.20.5-rootless
|
||||||
@@ -373,7 +398,9 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- USER_UID=1000
|
- USER_UID=1000
|
||||||
- USER_GID=1000
|
- USER_GID=1000
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_changedetection %}
|
||||||
changedetection:
|
changedetection:
|
||||||
container_name: changedetection
|
container_name: changedetection
|
||||||
image: dgtlmoon/changedetection.io
|
image: dgtlmoon/changedetection.io
|
||||||
@@ -384,7 +411,9 @@ services:
|
|||||||
- net
|
- net
|
||||||
volumes:
|
volumes:
|
||||||
- "/opt/docker/config/changedetection/data/:/datastore"
|
- "/opt/docker/config/changedetection/data/:/datastore"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_calibre %}
|
||||||
calibre:
|
calibre:
|
||||||
container_name: calibre
|
container_name: calibre
|
||||||
image: lscr.io/linuxserver/calibre-web:latest
|
image: lscr.io/linuxserver/calibre-web:latest
|
||||||
@@ -401,6 +430,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- "/opt/local/calibre/:/config"
|
- "/opt/local/calibre/:/config"
|
||||||
- "/media/docker/data/calibre/:/books"
|
- "/media/docker/data/calibre/:/books"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
net:
|
net:
|
||||||
Reference in New Issue
Block a user