Added template for config generation script
This commit is contained in:
42
templates/generate_configs.sh
Normal file
42
templates/generate_configs.sh
Normal 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 %}
|
||||
Reference in New Issue
Block a user