dynamically determine volume names

pull/7/head
Cian Hatton 3 years ago
parent 2fb212dcd5
commit 7810f155a8

@ -2,31 +2,18 @@
docker_compose_directory: /etc/docker-compose docker_compose_directory: /etc/docker-compose
services: services:
- name: gitea - name: gitea
volumes: ["gitea_data"]
- name: mealie - name: mealie
volumes: ["mealie_data"]
- name: linkding - name: linkding
volumes: ["linkding_data"]
- name: overseerr - name: overseerr
volumes: ["overseerr_config"]
- name: nextcloud - name: nextcloud
volumes: ["nextcloud_data"]
- name: dashboards - name: dashboards
volumes: []
- name: nginx-proxy-manager - name: nginx-proxy-manager
volumes: ["nginx-proxy-manager_data"]
- name: plex - name: plex
volumes: ["plex_config", "plex_tautulli_config"]
- name: uptime-kuma - name: uptime-kuma
volumes: ["uptime-kuma_data"]
- name: vpn-stack - name: vpn-stack
volumes: ["vpn-stack_qbittorrent_config", "vpn-stack_radarr_config", "vpn-stack_sonarr_config", "vpn-stack_jackett_config"]
- name: docker-volume-backup - name: docker-volume-backup
volumes: []
- name: mariadb - name: mariadb
volumes: ["mariadb_config","mariadb_data"]
- name: photoprism - name: photoprism
volumes: []
docker_networks: docker_networks:
- nextcloud_net - nextcloud_net

@ -1,14 +1,32 @@
#!/usr/bin/python #!/usr/bin/python
import os import os
import yaml
from pathlib import Path
def main(): def main():
existing = eval(os.getenv("EXISTING_VOLUMES")) existing = eval(os.getenv("EXISTING_VOLUMES"))
services = eval(os.getenv("SERVICES")) services = eval(os.getenv("SERVICES"))
docker_compose_dir = os.getenv("DOCKER_COMPOSE_DIR")
full_volume_names = []
missing_volumes = [] missing_volumes = []
for service in services: for service in services:
for volume_name in service.get("volumes", []): service_name = service["name"]
docker_file = f"{docker_compose_dir}/{service_name}/docker-compose.yml"
docker_compose_dict = yaml.safe_load(Path(docker_file).read_text())
# no volumes specified in the compose file
if "volumes" not in docker_compose_dict:
continue
volumes = docker_compose_dict["volumes"]
for v in volumes:
full_volume_names.append(f"{service_name}_{v}")
for volume_name in full_volume_names:
if volume_name not in existing: if volume_name not in existing:
missing_volumes.append(volume_name) missing_volumes.append(volume_name)

@ -47,6 +47,7 @@
environment: environment:
EXISTING_VOLUMES: "{{ find_volumes.results | map(attribute='stdout_lines') | list | flatten }}" EXISTING_VOLUMES: "{{ find_volumes.results | map(attribute='stdout_lines') | list | flatten }}"
SERVICES: "{{ services }}" SERVICES: "{{ services }}"
DOCKER_COMPOSE_DIR: "{{docker_compose_directory}}"
args: args:
executable: python3 executable: python3
register: python_output register: python_output

Loading…
Cancel
Save