terraform { required_providers { render = { source = "jackall3n/render" version = "~> 1.3.0" } } } variable "render_api_token" { sensitive = true } variable "render_user_email" { sensitive = true } provider "render" { api_key = var.render_api_token } data "render_owner" "render_owner" { email = var.render_user_email } resource "render_service" "chroma" { name = "chroma" owner = data.render_owner.render_owner.id type = "web_service" auto_deploy = true env_vars = concat([{ key = "IS_PERSISTENT" value = "1" }, { key = "PERSIST_DIRECTORY" value = var.chroma_data_volume_mount_path }, ], var.enable_auth ? [{ key = "CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER" value = "chromadb.auth.token.TokenConfigServerAuthCredentialsProvider" }, { key = "CHROMA_SERVER_AUTH_CREDENTIALS" value = "${local.token_auth_credentials.token}" }, { key = "CHROMA_SERVER_AUTH_PROVIDER" value = var.auth_type }] : [] ) image = { owner_id = data.render_owner.render_owner.id image_path = "${var.chroma_image_reg_url}:${var.chroma_release}" } web_service_details = { env = "image" plan = var.render_plan region = var.region health_check_path = "/api/v1/heartbeat" disk = { name = var.chroma_data_volume_device_name mount_path = var.chroma_data_volume_mount_path size_gb = var.chroma_data_volume_size } docker = { command = "uvicorn chromadb.app:app --reload --workers 1 --host 0.0.0.0 --port 80 --log-config chromadb/log_config.yml --timeout-keep-alive 30" path = "./Dockerfile" } } } output "service_id" { value = render_service.chroma.id } output "instance_url" { value = render_service.chroma.web_service_details.url } output "chroma_auth_token" { value = random_password.chroma_token.result sensitive = true }