diff --git a/coreos-config/playbook.yaml b/coreos-config/playbook.yaml index 82c266a..85e3c73 100644 --- a/coreos-config/playbook.yaml +++ b/coreos-config/playbook.yaml @@ -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 } diff --git a/coreos-config/roles/compose_project/defaults/main.yml b/coreos-config/roles/compose_project/defaults/main.yml index 8af830a..f17db7c 100644 --- a/coreos-config/roles/compose_project/defaults/main.yml +++ b/coreos-config/roles/compose_project/defaults/main.yml @@ -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 diff --git a/coreos-config/roles/compose_project/tasks/create.yml b/coreos-config/roles/compose_project/tasks/create.yml new file mode 100644 index 0000000..4efc46d --- /dev/null +++ b/coreos-config/roles/compose_project/tasks/create.yml @@ -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" diff --git a/coreos-config/roles/compose_project/tasks/main.yml b/coreos-config/roles/compose_project/tasks/main.yml index 13dfd13..5c9499b 100644 --- a/coreos-config/roles/compose_project/tasks/main.yml +++ b/coreos-config/roles/compose_project/tasks/main.yml @@ -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 ... diff --git a/coreos-config/roles/compose_project/tasks/remove.yml b/coreos-config/roles/compose_project/tasks/remove.yml new file mode 100644 index 0000000..1b0c815 --- /dev/null +++ b/coreos-config/roles/compose_project/tasks/remove.yml @@ -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 }}"