Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Task reference

Everything an operator runs goes through go-task. The root Taskfile.yaml is only a set of includes; the real definitions are one file per namespace under .taskfiles/.

task --list

Arguments come after --. A task documented as -- <x> requires one; [-- <x>] takes an optional one.

ops: — the operator machine

TaskDoes
ops:setupEverything below, plus tf:init. Run this once on a new workstation
ops:depsInstall the toolchain. Needs dnf and uv
ops:collectionsansible-galaxy collection install -r requirements.yml
ops:hookspre-commit install

ans: — hosts

TaskDoes
ans:setup [-- <host>]First contact and hardening. Re-runnable
ans:k0sConverge the cluster and bootstrap Flux
ans:pingansible all -m ping
ans:lintansible-lint

bao: — OpenBao

TaskDoes
bao:statusSeal and init status
bao:policy-syncNamespace, mount, auth and policy bootstrap. Idempotent
bao:kv -- <args>Run bao kv in-cluster. Root token is piped over stdin, never argv
task bao:kv -- get -namespace=node-kenaz secret/actual
task bao:kv -- put -namespace=infra secret/foo key=value

fx: — Flux

TaskDoes
fx:getKustomizations and their sync status
fx:sourcesGitRepository sources
fx:hrHelmReleases
fx:failingOnly Kustomizations and HelmReleases that aren’t Ready
fx:reconcile [-- <name>]Force-reconcile one, or all of them, --with-source
fx:redeploy -- <name>Force a HelmRelease to reinstall even if its chart is unchanged
fx:logs [-- <controller>]Tail a controller, default kustomize-controller

k0s: — the cluster

TaskDoes
k0s:statusOne screen: nodes, unhealthy pods, Flux sync state
k0s:nodeskubectl get nodes -o wide
k0s:pods [-- <ns>]List pods
k0s:failingOnly pods not Running with every container ready. Completed Jobs excluded
k0s:events [-- <ns>]Recent events, oldest first
k0s:warnings [-- <ns>]Warning events only
k0s:logs -- <ns>/<name>Follow logs. <name> may be deploy/x, job/x, or a pod
k0s:previous -- <ns>/<pod>A crashed pod’s logs from before its last restart
k0s:describe -- <ns>/<pod>Describe a pod, with its events
k0s:restart -- <ns>/<deploy>Roll a Deployment and wait for it
k0s:jobs [-- <ns>]Jobs and CronJobs
k0s:jobs-clean [-- <ns>]Delete finished Jobs. Running ones are left alone
k0s:topReal CPU/memory per node, and the 15 hungriest pods
k0s:ingressIngresses across all namespaces
k0s:certsCertificates and pending CertificateRequests
k0s:applyRe-converge with k0sctl and re-bootstrap Flux

Every k0s:* and fx:* task points KUBECONFIG at ansible/.generated/kubeconfig itself — you do not need it in your environment.

tf: — the cloud plane

TaskDoes
tf:init [-- <module>]All modules if no argument. No secrets needed
tf:plan -- <module>Plan, with secrets.env resolved through pass-cli
tf:apply -- <module>Apply
tf:validate -- <module>tofu validate

docs: — this book

TaskDoes
docs:buildBuild into docs/book/, which is gitignored
docs:serveServe with live reload and open a browser