159 lines
3.2 KiB
Text
159 lines
3.2 KiB
Text
|
|
# 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
|
||
|
|
),
|
||
|
|
}
|