69 lines
2.2 KiB
YAML
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
|