provisioning-code/templates/workspace/nickel/lib/taskserv_defaults.ncl

159 lines
3.2 KiB
Text
Raw Permalink Normal View History

# 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
),
}