---
- 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