240 lines
5.7 KiB
TOML
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
|