00_core.ymlΒΆ

---
- include_tasks: utils/once/flag.yml

- name: "πŸ₯Ύ For '{{ application_id }}': bootstrap the compose host once"
  ansible.builtin.include_role:
    name: sys-svc-compose
    tasks_from: 00_core.yml
  when: run_once_sys_svc_compose is not defined

- name: "πŸ”Œ Provide the MCP adapter of {{ application_id }}"
  when: QDRANT_MCP_ENABLED | bool
  block:
    - name: "πŸ”Œ Stage the MCP adapter instance for {{ application_id }}"
      ansible.builtin.include_tasks: "{{ lookup('path_absolute', 'roles/svc-ai-mcp-adapter/tasks/instance.yml') }}"
      vars:
        mcp_adapter_instance_dir: "{{ QDRANT_MCP_INSTANCE_DIR }}"

    - name: "🧱 Rebuild the MCP adapter of {{ application_id }}"
      ansible.builtin.include_tasks: "{{ lookup('path_absolute', 'roles/svc-ai-mcp-adapter/tasks/rebuild.yml') }}"

- name: "πŸ”§ Setup container network for {{ application_id }}"
  include_tasks: "{{ lookup('path_absolute', 'roles/sys-svc-compose/tasks/utils/network/routine.yml') }}"
  vars:
    compose_handlers_flush: true
    application_id: "svc-db-qdrant"
    database_consumer_id: "svc-db-qdrant"

- name: "⏳ QDRANT | Wait until container is running (not restarting)"
  ansible.builtin.shell: >
    container inspect --type container --format '{{ "{{.State.Status}}" }} {{ "{{.State.Restarting}}" }}' {{ QDRANT_CONTAINER_ADDRESS }}
  register: qdrant_state
  retries: 120
  delay: 2
  until: >
    (qdrant_state.stdout is search('running')) and
    (qdrant_state.stdout is not search('true'))
  changed_when: false

- name: "βœ… QDRANT | Confirm HTTP API is ready (/readyz)"
  ansible.builtin.shell: >
    {{ QDRANT_EXEC_SHELL }}
    'exec 3<>/dev/tcp/127.0.0.1/6333; printf "GET /readyz HTTP/1.0\r\n\r\n" >&3; grep -q "200 OK" <&3'
  register: qdrant_ready
  retries: 30
  delay: 2
  until: qdrant_ready.rc == 0
  changed_when: false