fix: generate talos config before bootstrap
This commit is contained in:
parent
d16442862e
commit
7678d614f9
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue