# vim: ft=yaml.ansible --- - name: setup external services network docker_network: name: external_services - name: Service block for all services loop: "{{ services | dict2items(key_name='name', value_name='vars') }}" loop_control: loop_var: service when: single_service is not defined and (service.vars.disabled_in_vagrant is not defined or not (service.vars.disabled_in_vagrant and vagrant)) block: - name: Create volume folder file: name: "{{ service.vars.volume_folder }}" state: directory - name: Upload Compose file template: src: compose-files/{{ service.name }}.yml.j2 dest: "{{ service.vars.volume_folder }}/docker-compose.yml" - name: Run pre-deployment tasks include_tasks: pre_deploy/{{ service.name }}.yml when: service.vars.pre_deploy_tasks is defined and service.vars.pre_deploy_tasks - name: Deploy Compose stack command: docker compose up -d --remove-orphans --pull always args: chdir: "{{ service.vars.volume_folder }}" - name: Run post-deployment tasks include_tasks: post_deploy/{{ service.name }}.yml when: service.vars.post_deploy_tasks is defined and service.vars.post_deploy_tasks - name: Service block for a single service when: single_service is defined and single_service in services and (services[single_service].disabled_in_vagrant is not defined or not (services[single_service].disabled_in_vagrant and vagrant)) block: - name: Create volume folder file: name: "{{ services[single_service].volume_folder }}" state: directory - name: Upload Compose file template: src: compose-files/{{ single_service }}.yml.j2 dest: "{{ services[single_service].volume_folder }}/docker-compose.yml" - name: Run pre-deployment tasks include_tasks: pre_deploy/{{ single_service }}.yml when: services[single_service].pre_deploy_tasks is defined and services[single_service].pre_deploy_tasks - name: Deploy Compose stack command: docker compose up -d --remove-orphans --pull always args: chdir: "{{ services[single_service].volume_folder }}" - name: Run post-deployment tasks include_tasks: post_deploy/{{ single_service }}.yml when: services[single_service].post_deploy_tasks is defined and services[single_service].post_deploy_tasks