# Taskserv Configuration Defaults # Common taskserv configuration patterns and defaults for workspace servers let provisioning = import "schemas/main.ncl" in let lib = provisioning.lib in { # OS taskserv defaults os = { name = "os", profile = "worker", # or "control-plane" version = null, }, # Container runtime defaults (runc, crun, youki) container_runtimes = { runc = { name = "runc", version = "1.1.0", enable = true, }, crun = { name = "crun", version = "1.9.0", enable = false, }, youki = { name = "youki", version = "0.0.5", enable = false, }, }, # Container daemon defaults containerd = { name = "containerd", version = "1.7.0", enable = true, }, # Kubernetes defaults kubernetes = { name = "kubernetes", role = "worker", # or "master", "control-plane" version = "1.29.0", cluster_name = null, enable = true, }, # etcd defaults (for control planes) etcd = { name = "etcd", cluster_role = "member", # or "leader", "learner" cluster_name = null, cluster_token = null, version = "3.5.10", enable = false, }, # CoreDNS defaults coredns = { name = "coredns", version = "1.10.0", enable = false, }, # Network policy engine (Cilium) cilium = { name = "cilium", version = "1.14.0", enable = false, mode = "native", # or "overlay" }, # Storage (Ceph via Rook) rook_ceph = { name = "rook_ceph", version = "1.13.0", enable = false, cluster_name = "rook-ceph", }, # Container registry registry = { name = "registry", version = "2.8.0", enable = false, storage_path = "/var/lib/registry", }, # NFS client nfs_client = { name = "nfs_client", enable = false, server = null, export_path = null, }, # PostgreSQL (optional data store) postgres = { name = "postgres", version = "15", enable = false, data_path = "/var/lib/postgresql", }, # Redis (optional cache/queue) redis = { name = "redis", version = "7.0", enable = false, data_path = "/var/lib/redis", }, # Resolv (DNS configuration) resolv = { name = "resolv", enable = true, }, # HTTP proxy/gateway proxy = { name = "proxy", enable = false, type = "nginx", # or "envoy" version = null, }, # Webhook service (for orchestration) webhook = { name = "webhook", enable = false, version = "1.0.0", }, # Factory function to create taskserv config create | doc "Generate taskserv config with defaults" = fun name => fun overrides => ( let defaults_for_name = ( if name == "os" then {name = "os", name}.os else if name == "kubernetes" then {name = "kubernetes", name}.kubernetes else if name == "etcd" then {name = "etcd", name}.etcd else if name == "containerd" then {name = "containerd", name}.containerd else if name == "cilium" then {name = "cilium", name}.cilium else if name == "rook_ceph" then {name = "rook_ceph", name}.rook_ceph else {name = name} ) in defaults_for_name & overrides ), }