--- - name: "Setup {{ application_id }}" when: run_once_web_app_discourse is not defined block: - name: "reset (if enabled)" include_tasks: reset.yml when: mode_reset | bool # Necessary for building: https://chat.openai.com/share/99d258cc-294b-4924-8eef-02fe419bb838 - name: install which pacman: name: which state: present - name: "load docker, db and proxy for {{application_id}}" include_role: name: cmp-db-docker-proxy - name: pull docker repository git: repo: "https://github.com/discourse/discourse_docker.git" dest: "{{docker_repository_directory }}" update: yes notify: recreate discourse become: true ignore_errors: true - name: set chmod 700 for {{docker_repository_directory }}containers ansible.builtin.file: path: "{{docker_repository_directory }}/containers" mode: '700' state: directory - name: "copy configuration to {{discourse_application_yml_destination}}" template: src: config.yml.j2 dest: "{{ discourse_application_yml_destination }}" notify: recreate discourse - name: "Verify that {{ discourse_container }} is running" command: docker compose ps --filter status=running --format '{{"{{"}}.Name{{"}}"}}' | grep -x {{ discourse_container }} register: docker_ps changed_when: docker_ps.rc == 1 failed_when: docker_ps.rc not in [0, 1] notify: recreate discourse - name: flush, to recreate discourse app meta: flush_handlers - name: Set error string for network already exists set_fact: docker_discourse_already_in_net: "Error response from daemon: endpoint with name {{ discourse_container }} already exists in network {{ discourse_pg_network }}" - name: "Connect {{ discourse_container }} to network {{ discourse_pg_network }}" command: > docker network connect {{ discourse_pg_network }} {{ discourse_container }} register: network_connect failed_when: > network_connect.rc != 0 and docker_discourse_already_in_net not in network_connect.stderr changed_when: network_connect.rc == 0 when: - applications | get_app_conf(application_id, 'features.central_database', False) - name: "Remove {{ discourse_network }} from {{ database_host }}" command: > docker network disconnect {{ discourse_network }} {{ database_host }} register: network_disconnect failed_when: > network_disconnect.rc != 0 and 'is not connected to network {{ discourse_network }}' not in network_disconnect.stderr changed_when: network_disconnect.rc == 0 when: - applications | get_app_conf(application_id, 'features.central_database', False) - name: run the docker_discourse tasks once set_fact: run_once_web_app_discourse: true when: run_once_web_app_discourse is not defined