Added template for config generation script

This commit is contained in:
2025-11-09 02:05:26 +01:00
parent a477e5c4c2
commit 83848a3624

View File

@@ -0,0 +1,42 @@
#!/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 %}