Starting from Scratch

First, make sure to create the Talos VMs as described here, then, cd into the talos directory.

From here, you can use Dagger to automatically provision the nodes. Each step is also detailed in the sub-chapters - if you would prefer a manual approach.

Note: If you havn't already, generate the cluster info using

talosctl gen config homelab https://10.0.9.25:6443 -o _out
$ dagger functions
Name        Description
argocd      Step 4: Start ArgoCD.
base-img    Builds a Alpine image with talosctl installed and ready to go.
bootstrap   Step 2: Bootstrap etcd.
cilium      Step 3: Apply Cilium.
provision   Step 1: Provision the nodes.

Step 1: Provision the Nodes

After the brand new Talos VMs load up - and the STAGE is Maintance - run:

dagger call \
  --raw-template=./templates/talos.yaml.j2 \
  --talos-dir=_out \
  provision

Step 2: Bootstrap Etcd

After all the nodes have rebooted (~1min), bootstrap Etcd. The STAGE on teemo will change from Installing to Booting when its ready to be bootstraped.

dagger call \
  --raw-template=./templates/talos.yaml.j2 \
  --talos-dir=_out \
  bootstrap

Step 3: Apply Cilium

Once Etcd has started, apply cilium:

dagger call \
  --raw-template=./templates/talos.yaml.j2 \
  --talos-dir=_out \
  cilium

Step 4: Start ArgoCD

Once the Cilium step has compleated (it'll show a nice status dashboard), start ArgoCD.

dagger call \
  --raw-template=./templates/talos.yaml.j2 \
  --talos-dir=_out \
  argocd

Importantly, this step ends by printing out the default ArgoCD password. You still need to manually change the password and sync the apps-of-apps; see here.

Step 6: Grab the Kubeconfig

talosctl --talosconfig _out/talosconfig kubeconfig --nodes 10.0.9.25