#!/usr/bin/env bash set -euo pipefail CONFIGS={{ root }}/configs # Generate the configuration for each node {% for node in nodes -%} talosctl gen config {{ cluster.name }} https://{{ cluster.controlPlaneIp }}:6443 -f \ --with-secrets {{ cluster.secretsFile }} \ --talos-version v{{ cluster.version.talos }} \ --kubernetes-version v{{ cluster.version.kubernetes }} \ --output-types {{ node.type }} \ --install-image factory.talos.dev/metal-installer/{{ node.schematic }}:v{{ cluster.version.talos }} \ {% for patch in node.patches.all -%} {# The double call to tojson is needed to properly escape the patch (object -> json -> string) -#} --config-patch {{ patch|tojson|tojson }} \ {% endfor -%} {% for patch in node.patches.controlPlane -%} --config-patch-control-plane {{ patch|tojson|tojson }} \ {% endfor -%} --with-docs=false \ --with-examples=false \ -o ${CONFIGS}/{{ cluster.name }}/{{ node.hostname }}.yaml {% endfor %} # Generate the talosconfig file for each cluster talosctl gen config {{ cluster.name }} https://{{ cluster.controlPlaneIp }}:6443 -f \ --with-secrets {{ cluster.secretsFile }} \ --output-types talosconfig \ -o ${CONFIGS}/{{ cluster.name }}/talosconfig # Create merged talosconfig TALOSCONFIG=${CONFIGS}/talosconfig rm -f ${TALOSCONFIG} talosctl config --talosconfig=${CONFIGS}/{{ cluster.name }}/talosconfig endpoint {{ cluster.controlPlaneIp }} talosctl config --talosconfig=${TALOSCONFIG} merge ${CONFIGS}/{{ cluster.name }}/talosconfig