diff --git a/playbooks/deploy.yaml b/playbooks/deploy.yaml index 86c338a..35f90ca 100644 --- a/playbooks/deploy.yaml +++ b/playbooks/deploy.yaml @@ -10,6 +10,8 @@ - name: Clean up old orechestration data hosts: cluster gather_facts: false + tags: + - cleanup vars_files: - vars/services.yaml - vars/access.yaml @@ -53,6 +55,19 @@ loop_control: label: "{{ item.Name }}" + - name: Fetch existing Nginx configs + ansible.builtin.command: + cmd: ls {{ local_datastore_mount }}/appdata/nginx/conf.d/ + changed_when: false + register: _nginx_configs + + - name: Remove legacy nginx configs + when: item.replace('.conf', '') not in skylab_services + ansible.builtin.file: + path: "{{ local_datastore_mount }}/appdata/nginx/conf.d/{{ item }}.conf" + state: absent + loop: "{{ _nginx_configs.stdout_lines }}" + - name: Deploy stack service{{ (' ' + service) if service is defined else 's' }} hosts: cluster @@ -83,6 +98,15 @@ loop_control: label: "{{ item.name }}" + - name: Create compose directory + become: true + ansible.builtin.file: + path: "{{ skylab_compose_dir }}" + state: directory + owner: "{{ ansible_user }}" + group: "{{ skylab_group_admin.name }}" + mode: 0770 + - name: Install compose file vars: app: "{{ item.value }}" @@ -124,22 +148,53 @@ loop_control: label: "{{ item.key }}" - - name: Determine volume directories + - name: Configure datastore directories + run_once: true + block: + - name: Determine volume directories + vars: + _stack_volume_directories: [] + when: item.value.volumes is defined + ansible.builtin.set_fact: + _stack_volume_directories: "{{ _stack_volume_directories + [{'user': (item.value.user | default(ansible_user)), 'volumes': (item.value.volumes.values() | list)}] }}" + loop: "{{ _services | dict2items }}" + loop_control: + label: "{{ item.key }}" + + - name: Create service directories + become: true + ansible.builtin.file: + path: "{{ local_datastore_mount }}{{ item.1 }}" + state: directory + owner: "{{ item.0.user }}" + group: "{{ skylab_group_admin.name }}" + mode: 0770 + loop: "{{ _stack_volume_directories | subelements('volumes') }}" + + - name: Deploy stack vars: - _stack_volume_directories: [] - when: item.value.volumes is defined - ansible.builtin.set_fact: - _stack_volume_directories: "{{ _stack_volume_directories + [{'user': (item.value.user | default(ansible_user)), 'volumes': (item.value.volumes.values() | list)}] }}" + ansible_python_interpreter: "{{ skylab_ansible_venv }}/bin/python" + community.docker.docker_stack: + name: "{{ item.key }}" + compose: + - "{{ skylab_compose_dir }}/{{ item.key }}.yaml" + prune: false + state: present loop: "{{ _services | dict2items }}" loop_control: label: "{{ item.key }}" - - name: Create service directories - become: true - ansible.builtin.file: - path: "{{ local_datastore_mount }}{{ item.1 }}" - state: directory - owner: "{{ item.0.user }}" - group: "{{ skylab_group_admin.name }}" - mode: 0770 - loop: "{{ _stack_volume_directories | subelements('volumes') }}" + - name: Configure reverse proxy + run_once: true + block: + - name: Create nginx config + when: item.value.domain is defined + ansible.builtin.template: + src: stack-nginx.conf.j2 + dest: "{{ local_datastore_mount }}/appdata/nginx/conf.d/{{ item.key }}.conf" + owner: "{{ ansible_user }}" + group: "{{ skylab_group_admin.name }}" + mode: 0464 + loop: "{{ _services | dict2items }}" + loop_control: + label: "{{ item.value.domain | default(item.key) }}"