Allow to remove services via compose role
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Tobias Manske 2022-10-30 02:31:21 +01:00
parent 8d1a273b9a
commit 4dca002664
Signed by: tobias
GPG Key ID: E83C743C1FC2F79A
5 changed files with 86 additions and 62 deletions

View File

@ -98,6 +98,8 @@
- name: Install Services
hosts: host.nc.chaoswg.org
vars:
state: present
roles:
- { role: compose_project, service: traefik }
- { role: compose_project, service: keycloak }

View File

@ -2,3 +2,5 @@
# defaults file for roles/compose_project
service: dummy
compose_dir: /home/core/compose
state: present # or absent
restart: smart # or always or never

View File

@ -0,0 +1,67 @@
---
- block:
- name: Create Temporary directory
tempfile:
state: directory
changed_when: false
register: temp_file
- name: Create directory structure
file:
state: directory
dest: '{{ temp_file.path }}/{{ item.path }}'
mode: "{{ item.mode }}"
changed_when: false
with_filetree: "./templates/{{ service | mandatory }}"
when: item.state == 'directory'
loop_control:
label: '{{ item.path }}'
- name: Template Service Files
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ temp_file.path }}/{{ item.path }}"
mode: "{{ item.mode }}"
force: true
changed_when: false
with_filetree: "./templates/{{ service | mandatory }}"
loop_control:
label: '{{ item.path }}'
when: item.state == 'file'
delegate_to: localhost
check_mode: no
- name: Create Service Directory
file:
state: directory
path: "{{ compose_dir | mandatory }}"
- name: Copy Compose files
become: false
ansible.posix.synchronize:
src: "{{ temp_file.path | mandatory }}/"
dest: "{{ service_dir | mandatory }}"
archive: false
checksum: true
delete: true
recursive: true
mode: push
owner: false
group: false
perms: false
register: compose_files
- name: Delete temporary directory
ansible.builtin.file:
path: "{{ temp_file.path }}"
state: absent
changed_when: false
- name: Restart Service
community.docker.docker_compose:
project_src: "{{ service_dir | mandatory }}"
state: present
restarted: true
recreate: smart
build: true
remove_orphans: true
when: (compose_files.changed and restart == "smart") or restart == "always"

View File

@ -9,68 +9,10 @@
msg: "Working on {{ service }}"
verbosity: 0
- block:
- name: Create Temporary directory
tempfile: state=directory
changed_when: false
register: temp_file
- name: Create directory structure
file:
state: directory
dest: '{{ temp_file.path }}/{{ item.path }}'
mode: "{{ item.mode }}"
changed_when: false
with_filetree: "./templates/{{ service | mandatory }}"
when: item.state == 'directory'
loop_control:
label: '{{ item.path }}'
- name: Template Service Files
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ temp_file.path }}/{{ item.path }}"
mode: "{{ item.mode }}"
force: true
changed_when: false
with_filetree: "./templates/{{ service | mandatory }}"
loop_control:
label: '{{ item.path }}'
when: item.state == 'file'
delegate_to: localhost
check_mode: no
- include_tasks: create.yml
when: state == "present"
- name: Create Service Directory
file:
state: directory
path: "{{ compose_dir | mandatory }}"
- include_tasks: remove.yml
when: state == "absent"
- name: Copy Compose files
become: false
ansible.posix.synchronize:
src: "{{ temp_file.path | mandatory }}/"
dest: "{{ service_dir | mandatory }}"
archive: false
checksum: true
delete: true
recursive: true
mode: push
owner: false
group: false
perms: false
register: compose_files
- name: Delete temporary directory
ansible.builtin.file:
path: "{{ temp_file.path }}"
state: absent
changed_when: false
- name: Restart Service
community.docker.docker_compose:
project_src: "{{ service_dir | mandatory }}"
state: present
restarted: true
recreate: smart
build: true
remove_orphans: true
when: compose_files.changed
...

View File

@ -0,0 +1,11 @@
---
- name: Stop Service
community.docker.docker_compose:
project_src: "{{ service_dir | mandatory }}"
state: absent
remove_orphans: true
- name: Remove Service
file:
state: absent
path: "{{ service_dir | mandatory }}"