From 4738b263ec2fe8d58dfed220f13ca295b6d39598 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Thu, 4 Sep 2025 11:49:40 +0200 Subject: [PATCH] Added docker_volume_path filter_plugin --- filter_plugins/volume_path.py | 21 +++++++++++++++++++++ roles/web-app-akaunting/vars/main.yml | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 filter_plugins/volume_path.py diff --git a/filter_plugins/volume_path.py b/filter_plugins/volume_path.py new file mode 100644 index 00000000..c35581d8 --- /dev/null +++ b/filter_plugins/volume_path.py @@ -0,0 +1,21 @@ +from ansible.errors import AnsibleFilterError + +def docker_volume_path(volume_name: str) -> str: + """ + Returns the absolute filesystem path of a Docker volume. + + Example: + "akaunting_data" -> "/var/lib/docker/volumes/akaunting_data/_data/" + """ + if not volume_name or not isinstance(volume_name, str): + raise AnsibleFilterError(f"Invalid volume name: {volume_name}") + + return f"/var/lib/docker/volumes/{volume_name}/_data/" + +class FilterModule(object): + """Docker volume path filters.""" + + def filters(self): + return { + "docker_volume_path": docker_volume_path, + } diff --git a/roles/web-app-akaunting/vars/main.yml b/roles/web-app-akaunting/vars/main.yml index b150635f..a9f2d8c5 100644 --- a/roles/web-app-akaunting/vars/main.yml +++ b/roles/web-app-akaunting/vars/main.yml @@ -23,6 +23,6 @@ AKAUNTING_COMPANY_NAME: "{{ applications | get_app_conf(application_ AKAUNTING_COMPANY_EMAIL: "{{ applications | get_app_conf(application_id, 'company.email') }}" AKAUNTING_ADMIN_EMAIL: "{{ applications | get_app_conf(application_id, 'setup_admin_email') }}" AKAUNTING_ADMIN_PASSWORD: "{{ applications | get_app_conf(application_id, 'credentials.setup_admin_password') }}" -AKAUNTING_SETUP_MARKER: "/var/lib/docker/volumes/{{ AKAUNTING_VOLUME }}/_data/.akaunting_installed" +AKAUNTING_SETUP_MARKER: "{{ [ (AKAUNTING_VOLUME | docker_volume_path), '.akaunting_installed' ] | path_join }}" AKAUNTING_APP_KEY: "{{ applications | get_app_conf(application_id, 'credentials.app_key') }}" AKAUNTING_CACHE_DRIVER: "{{ 'redis' if applications | get_app_conf(application_id, 'docker.services.redis.enabled') else 'file' }}" \ No newline at end of file