servers/tasks/deploy.yml
2022-10-28 22:32:16 +02:00

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