#!/usr/bin/env bash set -euo pipefail ROOT=$(git rev-parse --show-toplevel) CONFIGS=${ROOT}/configs # Generate the configuration for each node {% set clusters = [] %} {%- for node in nodes -%} talosctl gen config {{ node.clusterName }} https://{{ node.controlplaneIp }}:6443 -f \ --with-secrets ${ROOT}/secrets.yaml \ --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 {%- do clusters.append((node.clusterName, node.controlplaneIp)) %} {% endfor %} # Generate the talosconfig file for each cluster {% for cluster in clusters|unique -%} talosctl gen config {{ cluster[0] }} https://{{ cluster[1] }}:6443 -f \ --with-secrets ${ROOT}/secrets.yaml \ --output-types talosconfig \ -o ${CONFIGS}/{{ cluster[0] }}/talosconfig {% endfor %} # Create merged talosconfig export TALOSCONFIG=${CONFIGS}/talosconfig rm -f ${TALOSCONFIG} {% for cluster in clusters|unique -%} talosctl config merge ${CONFIGS}/{{ cluster[0] }}/talosconfig {% endfor %}