From 20e38332e66aa35353ad7d64ed44ad97cdd7c919 Mon Sep 17 00:00:00 2001 From: uumas Date: Fri, 21 Apr 2023 05:09:14 +0300 Subject: [PATCH] container: reorganize volume directory creation --- roles/container/tasks/init.yml | 15 ++++++++++++++- roles/container/tasks/main.yml | 21 ++++++++++++++++++++- roles/container/tasks/volumes.yml | 20 ++------------------ 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/roles/container/tasks/init.yml b/roles/container/tasks/init.yml index 1c0760a..dae6db8 100644 --- a/roles/container/tasks/init.yml +++ b/roles/container/tasks/init.yml @@ -8,12 +8,25 @@ final_docker_volumes: "{{ docker_volumes }}" container_image: '' +- name: Set assistive variables + set_fact: + template_mounts_needed: "{{ docker_mounts | selectattr('template', 'defined') | list | length > 0 }}" + volumes_needed: "{{ docker_mounts | selectattr('name', 'defined') | list | length > 0 }}" + dockerfile_needed: "{{ dockerfile is defined and dockerfile | length > 0 }}" +- name: Set more assistive variables + set_fact: + bind_volumes_needed: "{{ volumes_needed and docker_volume_type == 'bind' }}" + named_volumes_needed: "{{ volumes_needed and docker_volume_type == 'named' }}" +- name: Set even more assistive variables + set_fact: + create_opt_directory: "{{ dockerfile_needed or docker_host_user or bind_volumes_needed or template_mounts_needed }}" + create_mounts_directory: "{{ bind_volumes_needed or template_mounts_needed }}" + - name: Set docker service full name set_fact: docker_service_name: "{{ docker_service }}_{{ docker_service_suffix }}" when: docker_service_suffix is defined - - name: Warn about docker_volumes legacy format debug: msg: "docker_volumes is deprecated. This support may be removed after december 2022. Use docker_mounts instead!" diff --git a/roles/container/tasks/main.yml b/roles/container/tasks/main.yml index b193a09..4c22883 100644 --- a/roles/container/tasks/main.yml +++ b/roles/container/tasks/main.yml @@ -46,7 +46,7 @@ path: "/opt/{{ docker_service }}" state: directory mode: 0755 - when: (dockerfile is defined and dockerfile | length > 0) or docker_host_user or docker_volume_type == 'bind' + when: create_opt_directory - name: Container image import_tasks: image.yml @@ -55,6 +55,25 @@ include_tasks: host_user.yml when: docker_host_user +- name: Create suffix directory + when: create_opt_directory and docker_service_suffix is defined + block: + - name: Create directory /opt/{{ docker_service + '/' + docker_service_suffix }} + file: + path: "/opt/{{ docker_service }}/{{ docker_service_suffix }}" + state: directory + owner: "{{ user.uid | default(omit) }}" + group: "{{ user.group | default(omit) }}" + mode: 0755 + - name: Set container_workdir variable + set_fact: + container_workdir: /opt/{{ docker_service }}/{{ docker_service_suffix }} + +- name: Set container_workdir variable + set_fact: + container_workdir: /opt/{{ docker_service }} + when: docker_service_suffix is not defined + - name: Container volumes import_tasks: volumes.yml diff --git a/roles/container/tasks/volumes.yml b/roles/container/tasks/volumes.yml index 6635c51..e340725 100644 --- a/roles/container/tasks/volumes.yml +++ b/roles/container/tasks/volumes.yml @@ -1,27 +1,11 @@ --- - name: Create directories and put files in them - when: - - docker_mounts | length > 0 - - (docker_volume_type == 'bind' and docker_mounts | selectattr('name', 'defined') | list | length > 0) or (docker_mounts | selectattr('template', 'defined') | list | length > 0) + when: create_mounts_directory block: - - name: Create directory /opt/{{ docker_service + '/' + docker_service_suffix }} - file: - path: "/opt/{{ docker_service }}/{{ docker_service_suffix }}" - state: directory - owner: "{{ user.uid | default(omit) }}" - group: "{{ user.group | default(omit) }}" - mode: 0755 - when: docker_service_suffix is defined - - name: Set docker_mounts_dir set_fact: - docker_mounts_dir: "/opt/{{ docker_service }}/{{ docker_service_suffix }}/mounts" - when: docker_service_suffix is defined - - name: Set docker_mounts_dir - set_fact: - docker_mounts_dir: "/opt/{{ docker_service }}/mounts" - when: docker_service_suffix is not defined + docker_mounts_dir: "{{ container_workdir }}/mounts" - name: Create directory {{ docker_mounts_dir }} file: