fix: generate talos config before bootstrap

This commit is contained in:
eding 2026-07-20 22:16:20 +02:00
parent d16442862e
commit 7678d614f9
2 changed files with 29 additions and 0 deletions

View file

@ -51,6 +51,9 @@ func (r Runner) Run() error {
if err := os.WriteFile(filepath.Join(terraformDir, r.Config.Talos.ConfigFileName), []byte(renderTerraformTFVars(r.Config)), 0644); err != nil {
return err
}
if err := ensureTalosConfig(generatedDir); err != nil {
return err
}
if r.Config.Talos.AutoRunTerraform {
if err := utils.RunCommandInDir(terraformDir, "terraform", "init"); err != nil {
@ -86,6 +89,20 @@ func ensureRepo(dir, repoURL, ref string) error {
return utils.RunCommandInDir(dir, "git", "checkout", ref)
}
func ensureTalosConfig(generatedDir string) error {
secretPath := filepath.Join(generatedDir, "talsecret.sops.yaml")
if _, err := os.Stat(secretPath); os.IsNotExist(err) {
secrets, err := utils.RunCommandOutputInDir(generatedDir, "talhelper", "gensecret", "--from-configfile", "talconfig.yaml")
if err != nil {
return err
}
if err := os.WriteFile(secretPath, secrets, 0600); err != nil {
return err
}
}
return utils.RunCommandInDir(generatedDir, "talhelper", "genconfig")
}
func renderTerraformTFVars(cfg config.Config) string {
var builder strings.Builder
builder.WriteString(fmt.Sprintf("proxmox_api_url = %q\n", cfg.Talos.Proxmox.APIURL))

View file

@ -55,6 +55,18 @@ func RunCommandOutput(name string, args ...string) ([]byte, error) {
return stdout.Bytes(), nil
}
func RunCommandOutputInDir(dir string, name string, args ...string) ([]byte, error) {
cmd := exec.Command(name, args...)
cmd.Dir = dir
var stdout bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return nil, err
}
return stdout.Bytes(), nil
}
func RunCommandJSON(target any, name string, args ...string) error {
output, err := RunCommandOutput(name, args...)
if err != nil {