110 lines
3.8 KiB
YAML
110 lines
3.8 KiB
YAML
---
|
|
- name: Ensure compose directories exist for {{ accounts_service_target.name }}
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
loop:
|
|
- "{{ accounts_service_target.compose_dir }}"
|
|
- "{{ accounts_service_target.compose_dir }}/env"
|
|
- "{{ accounts_service_target.compose_dir }}/config"
|
|
|
|
- name: Check for managed env file for {{ accounts_service_target.name }}
|
|
ansible.builtin.stat:
|
|
path: "{{ accounts_service_target.env_file }}"
|
|
register: accounts_service_target_managed_env_stat
|
|
|
|
- name: Check for legacy env file for {{ accounts_service_target.name }}
|
|
ansible.builtin.stat:
|
|
path: "{{ accounts_service_target.legacy_env_file }}"
|
|
register: accounts_service_target_legacy_env_stat
|
|
|
|
- name: Seed managed env file from legacy deployment for {{ accounts_service_target.name }}
|
|
ansible.builtin.copy:
|
|
src: "{{ accounts_service_target.legacy_env_file }}"
|
|
dest: "{{ accounts_service_target.env_file }}"
|
|
remote_src: true
|
|
owner: root
|
|
group: root
|
|
mode: "0600"
|
|
when:
|
|
- not accounts_service_target_managed_env_stat.stat.exists
|
|
- accounts_service_target_legacy_env_stat.stat.exists
|
|
|
|
- name: Render managed env file from defaults for {{ accounts_service_target.name }}
|
|
ansible.builtin.template:
|
|
src: app.env.j2
|
|
dest: "{{ accounts_service_target.env_file }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0600"
|
|
when:
|
|
- not accounts_service_target_managed_env_stat.stat.exists
|
|
- not accounts_service_target_legacy_env_stat.stat.exists
|
|
|
|
- name: Ensure managed CONFIG_TEMPLATE is present for {{ accounts_service_target.name }}
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ accounts_service_target.env_file }}"
|
|
regexp: '^CONFIG_TEMPLATE='
|
|
line: 'CONFIG_TEMPLATE=/etc/xcontrol/account.template.yaml'
|
|
state: present
|
|
insertafter: '^CONFIG_PATH='
|
|
|
|
- name: Ensure managed CONFIG_PATH is present for {{ accounts_service_target.name }}
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ accounts_service_target.env_file }}"
|
|
regexp: '^CONFIG_PATH='
|
|
line: 'CONFIG_PATH=/etc/xcontrol/account.yaml'
|
|
state: present
|
|
insertbefore: BOF
|
|
|
|
- name: Ensure managed IMAGE is present for {{ accounts_service_target.name }}
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ accounts_service_target.env_file }}"
|
|
regexp: '^IMAGE='
|
|
line: 'IMAGE={{ accounts_service_image_ref }}'
|
|
state: present
|
|
insertafter: '^CONFIG_TEMPLATE='
|
|
|
|
- name: Render managed account config for {{ accounts_service_target.name }}
|
|
ansible.builtin.template:
|
|
src: account.yaml.j2
|
|
dest: "{{ accounts_service_target.config_file }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
|
|
- name: Render compose file for {{ accounts_service_target.name }}
|
|
ansible.builtin.template:
|
|
src: docker-compose.yml.j2
|
|
dest: "{{ accounts_service_target.compose_file }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
|
|
- name: Pull image for {{ accounts_service_target.name }}
|
|
ansible.builtin.command: docker compose -f "{{ accounts_service_target.compose_file }}" pull app
|
|
args:
|
|
chdir: "{{ accounts_service_target.compose_dir }}"
|
|
when: accounts_service_pull_image | bool
|
|
|
|
- name: Remove any container currently bound to {{ accounts_service_target.host_port }}
|
|
ansible.builtin.shell: |
|
|
set -euo pipefail
|
|
ids="$(docker ps --filter publish={{ accounts_service_target.host_port }} -q)"
|
|
if [ -z "${ids}" ]; then
|
|
exit 0
|
|
fi
|
|
docker rm -f ${ids}
|
|
args:
|
|
executable: /bin/bash
|
|
register: accounts_service_target_port_cleanup
|
|
changed_when: accounts_service_target_port_cleanup.stdout | trim != ""
|
|
|
|
- name: Start managed compose target for {{ accounts_service_target.name }}
|
|
ansible.builtin.command: docker compose -f "{{ accounts_service_target.compose_file }}" up -d --force-recreate --remove-orphans
|
|
args:
|
|
chdir: "{{ accounts_service_target.compose_dir }}"
|