Funk-lab/ansible/roles/qdrant/tasks/main.yml

92 lines
2.4 KiB
YAML

---
# --- Utilisateur système ---
- name: Create qdrant system user
ansible.builtin.user:
name: "{{ qdrant_user }}"
system: true
shell: /sbin/nologin
home: "{{ qdrant_install_dir }}"
create_home: true
state: present
# --- Répertoires données (RAID5) ---
- name: Create Qdrant data directories on RAID5
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ qdrant_user }}"
group: "{{ qdrant_user }}"
mode: '0750'
loop:
- "{{ qdrant_data_dir }}"
- "{{ qdrant_data_dir }}/storage"
- "{{ qdrant_data_dir }}/snapshots"
# --- Binaire ---
- name: Check if qdrant binary is already installed
ansible.builtin.stat:
path: "{{ qdrant_install_dir }}/qdrant"
register: qdrant_binary
- name: Check installed qdrant version
ansible.builtin.command:
cmd: "{{ qdrant_install_dir }}/qdrant --version"
register: qdrant_current_version
changed_when: false
failed_when: false
when: qdrant_binary.stat.exists
- name: Download qdrant binary
ansible.builtin.get_url:
url: "https://github.com/qdrant/qdrant/releases/download/v{{ qdrant_version }}/qdrant-x86_64-unknown-linux-musl.tar.gz"
dest: /tmp/qdrant.tar.gz
mode: '0644'
when: >
not qdrant_binary.stat.exists or
qdrant_version not in (qdrant_current_version.stdout | default(''))
- name: Extract qdrant binary
ansible.builtin.unarchive:
src: /tmp/qdrant.tar.gz
dest: "{{ qdrant_install_dir }}"
remote_src: true
owner: "{{ qdrant_user }}"
group: "{{ qdrant_user }}"
when: >
not qdrant_binary.stat.exists or
qdrant_version not in (qdrant_current_version.stdout | default(''))
notify: Restart qdrant
# --- Configuration ---
- name: Deploy Qdrant config
ansible.builtin.template:
src: config.yaml.j2
dest: "{{ qdrant_install_dir }}/config.yaml"
owner: "{{ qdrant_user }}"
group: "{{ qdrant_user }}"
mode: '0640'
notify: Restart qdrant
# --- Service systemd ---
- name: Deploy Qdrant systemd service
ansible.builtin.template:
src: qdrant.service.j2
dest: /etc/systemd/system/qdrant.service
mode: '0644'
notify:
- Restart qdrant
- name: Enable and start Qdrant
ansible.builtin.systemd:
name: qdrant
enabled: true
daemon_reload: true
state: started
# Firewall géré centralement par le rôle gateway (nftables)
# Ports 6333 (HTTP) et 6334 (gRPC) ouverts pour cluster_network dans nftables.conf.j2