aipackage/ansible/roles/cezen-backend/tasks/main.yml
2026-06-30 09:09:43 +05:30

124 lines
2.8 KiB
YAML

---
# cezen-backend role: installs the Nexus One AI FastAPI management API
- name: Install system Python deps
apt:
name:
- python3-pip
- python3-venv
- python3.11
- python3.11-venv
- libmupdf-dev # required by pymupdf (Document Intelligence)
- mupdf-tools
- ffmpeg # required by faster-whisper audio transcription
state: present
update_cache: yes
- name: Create backend directory
file:
path: /opt/cezen/backend
state: directory
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0755"
- name: Create data directory (JWT secret + SQLite DB)
file:
path: /opt/cezen/data
state: directory
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0750"
- name: Copy FastAPI application
copy:
src: main.py
dest: /opt/cezen/backend/main.py
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0644"
notify: Restart cezen-api
- name: Copy QLoRA training runner
copy:
src: train_qlora.py
dest: /opt/cezen/backend/train_qlora.py
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0755"
- name: Copy RAG ingest worker
copy:
src: rag_ingest.py
dest: /opt/cezen/backend/rag_ingest.py
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0755"
notify: Restart cezen-api
- name: Copy requirements.txt
copy:
src: requirements.txt
dest: /opt/cezen/backend/requirements.txt
owner: "{{ cezen_user }}"
group: "{{ cezen_user }}"
mode: "0644"
- name: Create Python virtual environment (Python 3.11)
become_user: "{{ cezen_user }}"
command: python3.11 -m venv /opt/cezen/backend/venv
args:
creates: /opt/cezen/backend/venv/bin/activate
- name: Install Python dependencies
become_user: "{{ cezen_user }}"
pip:
requirements: /opt/cezen/backend/requirements.txt
virtualenv: /opt/cezen/backend/venv
notify: Restart cezen-api
- name: Install Pro/Max fine-tuning dependencies
become_user: "{{ cezen_user }}"
pip:
name:
- torch
- transformers
- datasets
- peft
- bitsandbytes
- accelerate
- trl
- sentencepiece
virtualenv: /opt/cezen/backend/venv
retries: 3
delay: 15
when: (tier | default('basic')) in ['pro', 'max']
- name: Install Max multi-GPU training dependencies
become_user: "{{ cezen_user }}"
pip:
name:
- deepspeed
virtualenv: /opt/cezen/backend/venv
retries: 3
delay: 15
when: (tier | default('basic')) == 'max'
- name: Install systemd service unit
copy:
src: cezen-api.service
dest: /etc/systemd/system/cezen-api.service
owner: root
group: root
mode: "0644"
notify:
- Reload systemd
- Restart cezen-api
- name: Enable and start cezen-api service
systemd:
name: cezen-api
enabled: yes
state: started
daemon_reload: yes