in cli/pkg/config/tfvars_generator.go [28:124]
func GenerateTfvars(conf *Config) {
vars := make(map[string]interface{})
// Set base config vars
vars["RegionalClusters"] = conf.RegionalClusters
vars["AuthenticatorSecurityGroup"] = conf.AuthenticatorSecurityGroup
vars["ClustersProjectId"] = conf.ClustersProjectID
vars["FleetProjectId"] = conf.FleetProjectID
vars["PrivateEndpoint"] = conf.PrivateEndpoint
vars["ReleaseChannel"] = conf.ReleaseChannel
vars["InitialNodeCount"] = conf.InitialNodeCount
vars["MinNodeCount"] = conf.MinNodeCount
vars["MaxNodeCount"] = conf.MaxNodeCount
vars["DefaultNodepoolOS"] = conf.DefaultNodepoolOS
vars["TFModuleRepo"] = conf.TFModuleRepo
vars["TFModuleBranch"] = conf.TFModuleBranch
vars["ConfigSyncRepo"] = conf.ConfigSyncRepo
vars["ConfigSyncRepoBranch"] = conf.ConfigSyncRepoBranch
vars["ConfigSyncRepoDir"] = conf.ConfigSyncRepoDir
// Set vpc config vars
if conf.VpcConfig.VpcType == "standalone" {
vars["VpcType"] = false
} else {
vars["VpcType"] = true
}
vars["VpcName"] = conf.VpcConfig.VpcName
vars["VpcProjectId"] = conf.VpcConfig.VpcProjectID
vars["VpcPodCidrName"] = conf.VpcConfig.VpcPodCIDRName
vars["VpcSvcCidrName"] = conf.VpcConfig.VpcSvcCIDRName
// First phase of templating tfvars (base and VPC configs)
tmpl, err := template.ParseFiles("templates/terraform.tfvars.tmpl")
if err != nil {
log.Fatalf("error parsing tfvars template: %s", err)
}
file, err := os.Create("terraform.tfvars")
if err != nil {
log.Fatalf("error creating tfvars file: %s", err)
}
defer file.Close()
err = tmpl.Execute(file, vars)
if err != nil {
log.Fatalf("error executing tffavs template merge: %s", err)
}
// Set Cluster config vars
for cc := range conf.ClustersConfig {
clusterVars := make(map[string]interface{})
clusterVars["ClusterName"] = conf.ClustersConfig[cc].ClusterName
clusterVars["Region"] = conf.ClustersConfig[cc].Region
clusterVars["Zones"] = strings.Join(conf.ClustersConfig[cc].Zones, ",")
clusterVars["SubnetName"] = conf.ClustersConfig[cc].SubnetName
clusterVars["MachineType"] = conf.ClustersConfig[cc].MachineType
tmpl, err := template.ParseFiles("templates/cluster_config.tmpl")
if err != nil {
log.Fatalf("error parsing cluster_config template: %s", err)
}
file, err := os.Create("clusters.tf")
if err != nil {
log.Fatalf("error creating clusters tf file: %s", err)
}
defer file.Close()
err = tmpl.Execute(file, clusterVars)
if err != nil {
log.Fatalf("error executing clusters template merge: %s", err)
}
files := []string{"terraform.tfvars", "clusters.tf"}
var buf bytes.Buffer
for _, file := range files {
b, err := os.ReadFile(file)
if err != nil {
log.Fatalf("error reading %s: %s", file, err)
}
buf.Write(b)
err = os.WriteFile("terraform.tfvars", buf.Bytes(), 0644)
if err != nil {
log.Fatalf("error writing to %s: %s", file, err)
}
}
}
err = os.Remove("clusters.tf")
if err != nil {
log.Fatalf("error deleting clusters.tf file: %s", err)
}
f, err := os.OpenFile("terraform.tfvars",
os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatalf("error opening tfvars file for final insert: %s", err)
}
defer f.Close()
if _, err := f.WriteString("}\n"); err != nil {
log.Fatalf("error appending } to the tfvars file: %s", err)
}
log.Info("✅ TFVars generated successfully.")
}