Skip to content

Commit 2887e78

Browse files
committed
feat: add support for embedding machine configuration
allow embedding machine configuration into Talos images. Signed-off-by: Orzelius <33936483+Orzelius@users.noreply.github.com>
1 parent 660ac01 commit 2887e78

19 files changed

Lines changed: 302 additions & 56 deletions

docs/api.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ customization:
6565
# optional, include well-known UEFI certificates into auto-enrollment database (SecureBoot ISO only)
6666
includeWellKnownCertificates: true
6767
bootloader: sd-boot # optional, defaults to auto (bootloader chosen by imager), other options: dual-boot, grub
68+
embeddedMachineConfiguration: | # optional, embedded machine configuration (YAML-encoded)
69+
apiVersion: v1alpha1
70+
kind: HostnameConfig
71+
hostname: my-custom-hostname
72+
auto: off
73+
---
74+
apiVersion: v1alpha1
75+
kind: KmsgLogConfig
76+
name: remote-log
77+
url: tcp://10.0.0.50:5044/
6878
overlay: # optional
6979
image: ghcr.io/siderolabs/sbc-raspberry-pi # overlay image
7080
name: rpi_generic # overlay name

go.sum

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,8 +1550,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
15501550
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
15511551
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
15521552
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
1553-
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
1554-
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
15551553
golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
15561554
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
15571555
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1646,10 +1644,6 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug
16461644
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
16471645
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
16481646
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
1649-
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
1650-
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
1651-
golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
1652-
golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
16531647
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
16541648
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
16551649
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1767,15 +1761,11 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
17671761
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17681762
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17691763
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1770-
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
1771-
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
17721764
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
17731765
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
17741766
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
17751767
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
17761768
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
1777-
golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
1778-
golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
17791769
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
17801770
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
17811771
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1790,8 +1780,6 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
17901780
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
17911781
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
17921782
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
1793-
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
1794-
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
17951783
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
17961784
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
17971785
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

hack/release.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ pre_release = false
1010

1111
[notes]
1212

13+
[notes.scanner]
14+
title = "Machine configuration embedding"
15+
description = """\
16+
Image Factory now supports embedding machine configuration into generated images starting with Talos version 1.2.0 onwards.
17+
"""
18+
1319
[make_deps]
1420

1521
[make_deps.pkgs]

internal/frontend/http/css/output.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/frontend/http/locales/active.en.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@
184184
- id: customization.overlay.skip
185185
translation: "If unsure, you can skip this step."
186186

187+
- id: customization.embedded_config
188+
translation: "Embedded machine configuration:"
189+
190+
- id: customization.embedded_config.description
191+
translation: "This configuration will be embedded into the image. For more details see the "
192+
193+
- id: customization.embedded_config.reference
194+
translation: "documentation"
195+
196+
- id: customization.embedded_config.skip
197+
translation: "Skip this step if unsure."
198+
187199
- id: customization.bootloader.title
188200
translation: "Bootloader"
189201

internal/frontend/http/locales/active.fr.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@
184184
- id: customization.overlay.skip
185185
translation: "En cas de doute, vous pouvez ignorer cette étape."
186186

187+
- id: customization.embedded_config
188+
translation: "Configuration machine intégrée :"
189+
190+
- id: customization.embedded_config.description
191+
translation: "Cette configuration sera intégrée à l'image. Pour plus de détails, consultez la "
192+
193+
- id: customization.embedded_config.reference
194+
translation: "documentation"
195+
196+
- id: customization.embedded_config.skip
197+
translation: "Ignorez cette étape en cas de doute."
198+
187199
- id: customization.bootloader.title
188200
translation: "Chargeur d'amorçage"
189201

internal/frontend/http/locales/active.pl.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@
184184
- id: customization.overlay.skip
185185
translation: "Jeśli nie masz pewności - możesz pominąć ten krok."
186186

187+
- id: customization.embedded_config
188+
translation: "Wbudowana konfiguracja maszyny:"
189+
190+
- id: customization.embedded_config.description
191+
translation: "Ta konfiguracja zostanie wbudowana w obraz. Aby uzyskać więcej informacji, zobacz "
192+
193+
- id: customization.embedded_config.reference
194+
translation: "dokumentację"
195+
196+
- id: customization.embedded_config.skip
197+
translation: "Pomiń ten krok, jeśli nie masz pewności."
198+
187199
- id: customization.bootloader.title
188200
translation: "Program rozruchowy"
189201

internal/frontend/http/locales/active.ru.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@
184184
- id: customization.overlay.skip
185185
translation: "Если не уверены — можно пропустить."
186186

187+
- id: customization.embedded_config
188+
translation: "Встроенная конфигурация машины:"
189+
190+
- id: customization.embedded_config.description
191+
translation: "Эта конфигурация будет встроена в образ. Подробнее см. в "
192+
193+
- id: customization.embedded_config.reference
194+
translation: "документации"
195+
196+
- id: customization.embedded_config.skip
197+
translation: "Пропустите этот шаг, если не уверены."
198+
187199
- id: customization.bootloader.auto.name
188200
translation: "Авто"
189201

internal/frontend/http/templates/common.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ <h1 class="mb-4 mt-2 text-2xl font-bold">{{ . }}</h1>
9898
<input type="hidden" name="selected-bootloader" value="{{ .Bootloader }}">
9999
<input type="hidden" name="overlay-options" value="{{ .OverlayOptions }}">
100100
<input type="hidden" name="selected-overlay-options" value="{{ .OverlayOptions }}">
101+
<input type="hidden" name="embedded-config" value="{{ .EmbeddedConfig }}">
102+
<input type="hidden" name="selected-embedded-config" value="{{ .EmbeddedConfig }}">
101103
{{- end -}}
102104
{{ end }}
103105

@@ -107,7 +109,7 @@ <h1 class="mb-4 mt-2 text-2xl font-bold">{{ . }}</h1>
107109
href="https://docs.siderolabs.com/talos/{{ short_version .Version }}{{ .Platform.Documentation}}">{{ t .Localizer
108110
"common.documentation" }}</a>).
109111
{{ end }}
110-
112+
111113
{{ define "board-description" }}
112114
{{ t .Localizer "common.runs_on" }} {{ .Board.Label }}{{ if .Board.Documentation }} (<a target="_blank"
113115
class="text-blue-600 dark:text-blue-500 underline"

internal/frontend/http/templates/wizard-cmdline.html

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<input name="cmdline-set" type="hidden" value="1">
1313
</div>
1414

15-
<div class="ms-2 prose dark:prose-invert prose-sm">
15+
<div class="ms-2 prose dark:prose-invert prose-sm mb-6">
1616
<p>
1717
{{ t .Localizer "customization.cmdline.description" }}<a target="_blank"
1818
href="https://docs.siderolabs.com/talos/{{ short_version .Version }}/reference/kernel/">{{ t .Localizer
@@ -37,6 +37,30 @@
3737
</p>
3838
</div>
3939

40+
{{ if .EmbeddedConfigEnabled }}
41+
<div class="mb-6">
42+
<label for="embedded-config" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">
43+
{{ t .Localizer "customization.embedded_config" }}
44+
</label>
45+
<textarea id="embedded-config" name="embedded-config"
46+
class="bg-gray-50 border min-h-24 border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full h-16 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
47+
placeholder="apiVersion: v1alpha1
48+
kind: HostnameConfig
49+
hostname: my-custom-hostname
50+
auto: off">{{ .SelectedEmbeddedConfig }}</textarea>
51+
</div>
52+
53+
<div class="ms-2 prose dark:prose-invert prose-sm mb-6">
54+
<p>
55+
{{ t .Localizer "customization.embedded_config.description" }}<a target="_blank"
56+
href="https://docs.siderolabs.com/talos/{{ short_version .Version }}/configure-your-talos-cluster/system-configuration/acquire#embedded-configuration"> {{ t .Localizer "customization.embedded_config.reference" }}</a>.
57+
</p>
58+
<p>
59+
{{ t .Localizer "customization.embedded_config.skip" }}
60+
</p>
61+
</div>
62+
{{ end }}
63+
4064
{{ if .OverlayOptionsEnabled }}
4165
<div class="mb-6 mt-6">
4266
<label for="extra-overlay-options" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">

0 commit comments

Comments
 (0)