137 lines
3.2 KiB
YAML
137 lines
3.2 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: Check for captured license file
|
|
stat:
|
|
path: /opt/cezen/license.json
|
|
register: cezen_license_file
|
|
|
|
- name: Allow backend service to read captured license
|
|
file:
|
|
path: /opt/cezen/license.json
|
|
owner: root
|
|
group: "{{ cezen_user }}"
|
|
mode: "0640"
|
|
when: cezen_license_file.stat.exists
|
|
|
|
- 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
|