provisioning/config/services.toml
2025-10-07 11:12:02 +01:00

240 lines
5.7 KiB
TOML

# Platform Services Configuration
# Defines all platform services and their deployment configurations
[services.orchestrator]
name = "orchestrator"
type = "platform"
category = "orchestration"
description = "Rust-based orchestrator for workflow coordination"
required_for = ["server", "taskserv", "cluster", "workflow", "batch", "test-env"]
[services.orchestrator.deployment]
mode = "binary"
[services.orchestrator.deployment.binary]
binary_path = "${HOME}/.provisioning/bin/provisioning-orchestrator"
args = ["--port", "8080", "--data-dir", "${HOME}/.provisioning/orchestrator/data"]
working_dir = "${HOME}/.provisioning/orchestrator"
env = {}
[services.orchestrator.health_check]
type = "http"
interval = 10
retries = 3
timeout = 5
[services.orchestrator.health_check.http]
endpoint = "http://localhost:8080/health"
expected_status = 200
method = "GET"
[services.orchestrator.startup]
auto_start = true
start_timeout = 30
start_order = 10
restart_on_failure = true
max_restarts = 3
[services.orchestrator.resources]
cpu_limit = "1"
memory_limit = "512Mi"
# Control Center - Web UI for management
[services.control-center]
name = "control-center"
type = "platform"
category = "ui"
description = "Web-based control center for infrastructure management"
required_for = []
dependencies = ["orchestrator"]
[services.control-center.deployment]
mode = "binary"
[services.control-center.deployment.binary]
binary_path = "${HOME}/.provisioning/bin/provisioning-control-center"
args = ["--port", "8081", "--orchestrator-url", "http://localhost:8080"]
working_dir = "${HOME}/.provisioning/control-center"
[services.control-center.health_check]
type = "http"
interval = 10
retries = 3
[services.control-center.health_check.http]
endpoint = "http://localhost:8081/health"
expected_status = 200
[services.control-center.startup]
auto_start = false
start_timeout = 30
start_order = 20
# CoreDNS - Local DNS resolution
[services.coredns]
name = "coredns"
type = "infrastructure"
category = "dns"
description = "Local DNS server for service discovery"
required_for = ["cluster"]
conflicts = ["dnsmasq", "systemd-resolved"]
[services.coredns.deployment]
mode = "docker"
[services.coredns.deployment.docker]
image = "coredns/coredns:1.11.1"
container_name = "provisioning-coredns"
ports = ["5353:53/udp", "5353:53/tcp"]
volumes = [
"${HOME}/.provisioning/coredns/Corefile:/Corefile:ro",
"${HOME}/.provisioning/coredns/zones:/zones:ro"
]
restart_policy = "unless-stopped"
[services.coredns.health_check]
type = "tcp"
interval = 10
retries = 3
[services.coredns.health_check.tcp]
host = "localhost"
port = 5353
[services.coredns.startup]
auto_start = false
start_timeout = 20
start_order = 15
# Gitea - Git server
[services.gitea]
name = "gitea"
type = "infrastructure"
category = "git"
description = "Self-hosted Git service"
required_for = []
[services.gitea.deployment]
mode = "docker"
[services.gitea.deployment.docker]
image = "gitea/gitea:1.21"
container_name = "provisioning-gitea"
ports = ["3000:3000", "222:22"]
volumes = [
"${HOME}/.provisioning/gitea/data:/data"
]
environment = { USER_UID = "1000", USER_GID = "1000" }
restart_policy = "unless-stopped"
[services.gitea.health_check]
type = "http"
interval = 15
retries = 5
[services.gitea.health_check.http]
endpoint = "http://localhost:3000/api/healthz"
expected_status = 200
[services.gitea.startup]
auto_start = false
start_timeout = 45
start_order = 30
# OCI Registry - Container registry
[services.oci-registry]
name = "oci-registry"
type = "infrastructure"
category = "registry"
description = "OCI-compliant container registry (Zot)"
required_for = []
[services.oci-registry.deployment]
mode = "docker"
[services.oci-registry.deployment.docker]
image = "ghcr.io/project-zot/zot:latest"
container_name = "provisioning-oci-registry"
ports = ["5000:5000"]
volumes = [
"${HOME}/.provisioning/oci-registry/data:/var/lib/registry",
"${HOME}/.provisioning/oci-registry/config.json:/etc/zot/config.json:ro"
]
restart_policy = "unless-stopped"
[services.oci-registry.health_check]
type = "http"
interval = 10
retries = 3
[services.oci-registry.health_check.http]
endpoint = "http://localhost:5000/v2/"
expected_status = 200
[services.oci-registry.startup]
auto_start = false
start_timeout = 20
start_order = 25
# MCP Server - Model Context Protocol integration
[services.mcp-server]
name = "mcp-server"
type = "platform"
category = "api"
description = "Model Context Protocol server for AI integration"
required_for = []
dependencies = ["orchestrator"]
[services.mcp-server.deployment]
mode = "binary"
[services.mcp-server.deployment.binary]
binary_path = "${HOME}/.provisioning/bin/provisioning-mcp-server"
args = ["--port", "8082"]
working_dir = "${HOME}/.provisioning/mcp-server"
[services.mcp-server.health_check]
type = "http"
interval = 10
retries = 3
[services.mcp-server.health_check.http]
endpoint = "http://localhost:8082/health"
expected_status = 200
[services.mcp-server.startup]
auto_start = false
start_timeout = 20
start_order = 40
# API Gateway - Unified API access
[services.api-gateway]
name = "api-gateway"
type = "platform"
category = "api"
description = "Unified REST API gateway"
required_for = []
dependencies = ["orchestrator"]
[services.api-gateway.deployment]
mode = "binary"
[services.api-gateway.deployment.binary]
binary_path = "${HOME}/.provisioning/bin/provisioning-api-gateway"
args = ["--port", "8083", "--orchestrator-url", "http://localhost:8080"]
working_dir = "${HOME}/.provisioning/api-gateway"
[services.api-gateway.health_check]
type = "http"
interval = 10
retries = 3
[services.api-gateway.health_check.http]
endpoint = "http://localhost:8083/health"
expected_status = 200
[services.api-gateway.startup]
auto_start = false
start_timeout = 20
start_order = 45