65 lines
1.8 KiB
YAML
65 lines
1.8 KiB
YAML
---
|
|
- name: 'Include vars for "{{ service }}" service'
|
|
include_vars: "{{ service_vars_file }}"
|
|
with_fileglob: "{{ service_path }}/vars/*"
|
|
loop_control:
|
|
loop_var: service_vars_file
|
|
tags:
|
|
- always
|
|
|
|
- name: 'Override "{{ service }}" service vars with local config'
|
|
set_fact:
|
|
'{{ variable.key }}': '{{ variable.value }}'
|
|
with_dict: "{{ service_config[service]|default({}) }}"
|
|
loop_control:
|
|
loop_var: variable
|
|
label: "{{ variable.key }}"
|
|
tags:
|
|
- always
|
|
|
|
- name: 'Ensure "{{ service }}" service config directory exist'
|
|
file:
|
|
path: "{{ remote_service_path }}/config"
|
|
state: directory
|
|
recurse: true
|
|
owner: "{{ ansible_user }}"
|
|
tags:
|
|
- always
|
|
|
|
- name: 'Load configuration tasks for "{{ service }}"'
|
|
include_tasks: "{{ service_task_file }}"
|
|
with_fileglob: "{{ service_path }}/tasks/*"
|
|
loop_control:
|
|
loop_var: service_task_file
|
|
when: service_task_file|basename is not regex('^_')
|
|
tags:
|
|
- always
|
|
|
|
- name: 'Copy stack file of "{{ service }}" to remote server'
|
|
template:
|
|
src: "{{ service_path }}/stack.yml"
|
|
dest: "{{ remote_service_path }}/stack.yml"
|
|
tags:
|
|
- deploy
|
|
|
|
- name: 'Deploy "{{ service }}" stack to docker'
|
|
community.docker.docker_stack:
|
|
name: "{{ service }}"
|
|
prune: yes
|
|
resolve_image: "always"
|
|
with_registry_auth: yes
|
|
compose:
|
|
- "{{ remote_service_path }}/stack.yml"
|
|
- version: "{{ compose_version }}"
|
|
networks: "{{ dict(swarm_global_networks | map(attribute='name') | zip_longest([], fillvalue={ 'external': True })) }}"
|
|
register: stack
|
|
tags:
|
|
- deploy
|
|
|
|
- name: "Mark updated services as restarted"
|
|
set_fact:
|
|
services_to_restart: "{{ services_to_restart | difference((stack.stack_spec_diff | default('{}') | from_json).keys()) }}"
|
|
tags:
|
|
- deploy
|
|
|