dynamically determine volume names (#7)

pull/9/head
Cian Hatton 3 years ago committed by GitHub
parent 2fb212dcd5
commit bb7c3e1b22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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,16 +1,34 @@
#!/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"]
if volume_name not in existing: docker_file = f"{docker_compose_dir}/{service_name}/docker-compose.yml"
missing_volumes.append(volume_name) 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:
missing_volumes.append(volume_name)
for mv in missing_volumes: for mv in missing_volumes:
print(mv) print(mv)

@ -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