#!/usr/bin/env bash set -euo pipefail CONFIGS={{ root }}/configs # Generate the configuration for each node {% for node in nodes -%} talosctl gen config {{ node.cluster.name }} https://{{ node.cluster.controlPlaneIp }}:6443 -f \ --with-secrets {{ node.cluster.secretsFile }} \ --talos-version {{ node.talosVersion }} \ --kubernetes-version {{ node.kubernesVersion }} \ --output-types {{ node.type }} \ --install-image factory.talos.dev/metal-installer/{{ node.schematicId }}:{{ node.talosVersion }} \ {% for patch in node.patches -%} {# 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.patchesControlPlane -%} --config-patch-control-plane {{ patch|tojson|tojson }} \ {% endfor -%} --with-docs=false \ --with-examples=false \ -o ${CONFIGS}/{{ node.filename }}.yaml {% endfor %} # Generate the talosconfig file for each cluster {% for cluster in clusters -%} talosctl gen config {{ cluster.name }} https://{{ cluster.controlPlaneIp }}:6443 -f \ --with-secrets {{ cluster.secretsFile }} \ --output-types talosconfig \ -o ${CONFIGS}/{{ cluster.name }}/talosconfig {% endfor %} # Create merged talosconfig TALOSCONFIG=${CONFIGS}/talosconfig rm -f ${TALOSCONFIG} {% for cluster in clusters -%} talosctl config --talosconfig=${CONFIGS}/{{ cluster.name }}/talosconfig endpoint {{ cluster.controlPlaneIp }} talosctl config --talosconfig=${TALOSCONFIG} merge ${CONFIGS}/{{ cluster.name }}/talosconfig {% endfor %}