--- - 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) 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 - name: Create directory {{ docker_mounts_dir }} file: path: "{{ docker_mounts_dir }}" state: directory owner: "{{ user.uid | default(omit) }}" group: "{{ user.group | default(omit) }}" mode: 0700 - name: Define mounts directory owner set_fact: mount_owner: "{{ user.uid if docker_host_user else image_user | default('') }}" mount_group: "{{ user.group if docker_host_user else '' }}" - name: "Create docker bind mount directories for {{ docker_service_name }}" file: path: "{{ docker_mounts_dir }}/{{ item.name }}" state: directory owner: "{{ mount_owner if (item.set_owner is not defined or item.set_owner) and mount_owner | length > 0 else omit }}" group: "{{ mount_group if (item.set_group is not defined or item.set_group) and mount_group | length > 0 else omit }}" when: item.name is defined loop: "{{ docker_mounts }}" - name: Set docker_volume_definition for named binds set_fact: docker_volume_definition: "{{ docker_volume_definition + [{'source': docker_mounts_dir + '/' + item.name, 'target': item.path, 'type': 'bind'}] }}" when: item.name is defined loop: "{{ docker_mounts }}" - name: Template docker template mounts for {{ docker_service_name }} template: src: "{{ item.template }}.j2" dest: "{{ docker_mounts_dir }}/{{ item.template }}" when: item.template is defined loop: "{{ docker_mounts }}" - name: Set docker_volume_definition for template mounts set_fact: docker_volume_definition: "{{ docker_volume_definition + [{'source': docker_mounts_dir + '/' + item.template, 'target': item.path, 'type': 'bind', 'read_only': true}] }}" when: item.template is defined loop: "{{ docker_mounts }}" - name: Set docker_volume_definition for named volumes set_fact: docker_volume_definition: "{{ docker_volume_definition + [{'source': docker_service_name + '_' + item.name, 'target': item.path, 'type': 'volume'}] }}" when: docker_volume_type == 'named' and item.name is defined loop: "{{ docker_mounts }}" - name: Set docker_volume_definition for src binds set_fact: docker_volume_definition: "{{ docker_volume_definition + [{'source': item.src, 'target': item.path, 'type': 'bind'}] }}" when: item.src is defined loop: "{{ docker_mounts }}"