playbooks/roles/vhosts/litellm/defaults/main.yml
2026-06-15 21:58:50 +08:00

85 lines
4.8 KiB
YAML

---
litellm_service_name: litellm-proxy
litellm_service_user: ubuntu
litellm_service_group: ubuntu
litellm_service_home: "/home/{{ litellm_service_user }}"
litellm_source_repo: "https://github.com/ai-workspace-services/litellm.git"
litellm_version: "3ad385a8a46988b6a81fe6c0bc22ef58685baa58"
litellm_debian_11_compat_version: "1.74.9"
litellm_package_spec: >-
{{
lookup('ansible.builtin.env', 'LITELLM_PACKAGE_SPEC')
| default(
'litellm[proxy]==' ~ litellm_debian_11_compat_version
if ansible_facts.distribution == 'Debian' and ansible_facts.distribution_major_version == '11'
else 'litellm[proxy] @ git+' ~ litellm_source_repo ~ '@' ~ litellm_version,
true)
}}
litellm_python_executable: "{{ lookup('ansible.builtin.env', 'LITELLM_PYTHON_EXECUTABLE') | default('python3', true) }}"
litellm_pip_executable: "{{ lookup('ansible.builtin.env', 'LITELLM_PIP_EXECUTABLE') | default('', true) }}"
litellm_listen_host: 127.0.0.1
litellm_listen_port: 4000
litellm_config_dir: /etc/litellm
litellm_config_file: "{{ litellm_config_dir }}/config.yaml"
litellm_env_file: "{{ litellm_config_dir }}/litellm.env"
litellm_systemd_unit_path: "/etc/systemd/system/{{ litellm_service_name }}.service"
ai_workspace_auth_token: "{{ lookup('ansible.builtin.env', 'AI_WORKSPACE_AUTH_TOKEN') | default('', true) }}"
litellm_master_key: "{{ lookup('ansible.builtin.env', 'LITELLM_MASTER_KEY') | default(ai_workspace_auth_token, true) }}"
litellm_salt_key_file: /root/.ai_workspace_litellm_salt_key
litellm_salt_key: "{{ lookup('ansible.builtin.env', 'LITELLM_SALT_KEY') | default(lookup('password', litellm_salt_key_file ~ ' length=32 chars=ascii_letters,digits'), true) }}"
litellm_ui_username: "{{ lookup('ansible.builtin.env', 'LITELLM_UI_USERNAME') | default('admin', true) }}"
litellm_ui_password: "{{ litellm_master_key }}"
litellm_caddyfile_path: /etc/caddy/Caddyfile
litellm_caddy_conf_dir: /etc/caddy/conf.d
litellm_basic_auth_username: "{{ litellm_ui_username }}"
# litellm_basic_auth_password_hash is generated dynamically via tasks
litellm_api_domain: api.svc.plus
litellm_ui_domain: litellm.svc.plus
litellm_ui_path: /ui
litellm_api_caddy_fragment_path: "/etc/caddy/conf.d/{{ litellm_api_domain }}.caddy"
litellm_ui_caddy_fragment_path: "/etc/caddy/conf.d/{{ litellm_ui_domain }}.caddy"
litellm_caddy_config_enabled: false
litellm_enable_basic_auth: false
# When true, strictly whitelists AI API paths only. When false, proxies all paths (Open Public Access).
litellm_api_caddy_strict_whitelist: false
# =============================================================================
# Database Configuration
# Set litellm_database_host to empty string to disable DB (no UI login).
# When set, the provision-database task creates the litellm DB + user for you.
# =============================================================================
litellm_database_host: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_HOST') | default('127.0.0.1', true) }}"
litellm_database_port: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_PORT') | default('5432', true) }}"
litellm_database_sslmode: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_SSLMODE') | default('disable', true) }}"
litellm_database_provisioner: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_PROVISIONER') | default('docker' if (postgresql_deploy_mode | default('compose')) == 'compose' else 'local', true) }}"
litellm_database_container_name: "{{ postgresql_container_name | default('ai-workspace-postgres') }}"
litellm_database_name: litellm
litellm_database_user: litellm
litellm_database_password_file: /root/.ai_workspace_litellm_database_password
litellm_database_password: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_PASSWORD') | default(lookup('password', litellm_database_password_file ~ ' length=32 chars=ascii_letters,digits'), true) }}"
litellm_database_admin_user: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_ADMIN_USER') | default('postgres', true) }}"
litellm_database_admin_password: "{{ lookup('ansible.builtin.env', 'LITELLM_DATABASE_ADMIN_PASSWORD') | default('', true) }}"
# Build DATABASE_URL from components (used in litellm.env)
litellm_database_url: "{% if litellm_database_host | trim | length > 0 %}postgresql://{{ litellm_database_user }}:{{ litellm_database_password }}@{{ litellm_database_host }}:{{ litellm_database_port }}/{{ litellm_database_name }}?sslmode={{ litellm_database_sslmode }}{% else %}{% endif %}"
# Models are now dynamically managed via DB/UI or user-provided config
# =============================================================================
# Router Settings
# =============================================================================
litellm_routing_strategy: "latency-based-routing"
litellm_enable_pre_call_checks: false
litellm_retry_after: 60
litellm_num_retries: 3
litellm_request_timeout: 600
litellm_max_parallel_requests: 1000
litellm_telemetry: false