docker/roles/docker_compose/tasks/main.yml
2024-04-30 11:10:28 +02:00

69 lines
2.2 KiB
YAML

---
# tasks file for Ansible-Docker-Compose-Role
- name: Check project limit
ansible.builtin.set_fact:
docker_compose_list_project_limit: "{{ docker_compose_project_limit | split(',') }}"
when: docker_compose_project_limit
- name: Get project_list
ansible.builtin.find:
paths:
- "{{ docker_compose_local_project_dir }}"
file_type: directory
register: docker_compose_find_results
delegate_to: localhost
- name: Arrange et filter folder list
ansible.builtin.set_fact:
docker_compose_project_list: "{{ docker_compose_project_list + [{'path': item.path, 'name': item.path | basename}] }}"
when: docker_compose_list_project_limit is undefined or item.path | basename in docker_compose_list_project_limit
loop: "{{ docker_compose_find_results.files }}"
- name: Copy projects
ansible.builtin.copy:
src: "{{ item.path }}"
dest: "{{ docker_compose_remote_project_dir }}"
mode: "preserve"
directory_mode: "711"
register: copy_result
loop: "{{ docker_compose_project_list }}"
- name: Create external docker networks
community.docker.docker_network:
name: "{{ item.name }}"
state: "{{ item.state | default('present') }}"
loop: "{{ docker_compose_external_network }}"
when: docker_compose_external_network is defined
- name: Manage docker compose project
community.docker.docker_compose_v2:
project_src: "{{ docker_compose_remote_project_dir + '/' + item.item.name }}"
remove_orphans: true
pull: always
build: always
state: "{{ docker_compose_state }}"
loop: "{{ copy_result.results }}"
when: not item.failed
register: result
changed_when: "'Started' in result.stderr"
# - name: Force restart
# community.docker.docker_compose_v2:
# project_src: "{{ docker_compose_remote_project_dir + '/' + item.item.item.name }}"
# remove_orphans: true
# pull: always
# build: always
# state: "restarted"
# loop: "{{ result.results }}"
# when: not item.changed and (copy_result.results | selectattr('item.name', 'eq', item.item.item.name) | map(attribute='changed'))
- name: Prune docker
community.docker.docker_prune:
containers: true
images: true
images_filters:
dangling: false
networks: true
volumes: true
builder_cache: true