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 {
|
if err := os.WriteFile(filepath.Join(terraformDir, r.Config.Talos.ConfigFileName), []byte(renderTerraformTFVars(r.Config)), 0644); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := ensureTalosConfig(generatedDir); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if r.Config.Talos.AutoRunTerraform {
|
if r.Config.Talos.AutoRunTerraform {
|
||||||
if err := utils.RunCommandInDir(terraformDir, "terraform", "init"); err != nil {
|
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)
|
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 {
|
func renderTerraformTFVars(cfg config.Config) string {
|
||||||
var builder strings.Builder
|
var builder strings.Builder
|
||||||
builder.WriteString(fmt.Sprintf("proxmox_api_url = %q\n", cfg.Talos.Proxmox.APIURL))
|
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
|
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 {
|
func RunCommandJSON(target any, name string, args ...string) error {
|
||||||
output, err := RunCommandOutput(name, args...)
|
output, err := RunCommandOutput(name, args...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue