From 0335cce25d41138386f2388b6c4bc790344326bc Mon Sep 17 00:00:00 2001 From: jianli-97 Date: Tue, 28 May 2024 08:56:26 +0800 Subject: [PATCH] Complete cmd params --- cmd/command/opts/opts.go | 9 ++-- cmd/command/setup_opts.go | 34 +++++++++++--- cmd/deploy.go | 44 ++++++++++++++++--- cmd/extend.go | 22 +++++++--- cmd/template.go | 4 +- .../asset/infraasset/ipxeasset.go | 23 +++++----- .../asset/infraasset/libvirtasset.go | 2 +- .../asset/infraasset/openstackasset.go | 6 +-- .../asset/infraasset/pxeasset.go | 12 ++--- pkg/constants/constants.go | 4 ++ pkg/infra/ipxe.go | 15 ++++--- pkg/infra/pxe.go | 7 +-- .../bootconfig/kickstart/kickstart.go | 28 +++++++----- pkg/terraform/generate.go | 7 +-- 14 files changed, 147 insertions(+), 70 deletions(-) diff --git a/cmd/command/opts/opts.go b/cmd/command/opts/opts.go index ff965aa..5692044 100644 --- a/cmd/command/opts/opts.go +++ b/cmd/command/opts/opts.go @@ -97,17 +97,18 @@ type Libvirt struct { } type PXE struct { + IP string HTTPServerPort string HTTPRootDir string - TFTPServerIP string TFTPServerPort string TFTPRootDir string } type IPXE struct { - IPXEPort string - IPXEFilePath string - IPXEOSInstallTreePath string + IP string + Port string + FilePath string + OSInstallTreePath string } type MasterConfig struct { diff --git a/cmd/command/setup_opts.go b/cmd/command/setup_opts.go index 678a0ff..bc02050 100644 --- a/cmd/command/setup_opts.go +++ b/cmd/command/setup_opts.go @@ -25,9 +25,37 @@ import ( func SetupDeployCmdOpts(deployCmd *cobra.Command) { flags := deployCmd.Flags() flags.StringVarP(&opts.Opts.ClusterConfigFile, "file", "f", "", "Location of the cluster deploy config file") - flags.StringVarP(&opts.Opts.ClusterID, "cluster-id", "", "", "Unique identifier for the cluster") + flags.StringVarP(&opts.Opts.ClusterID, "clusterID", "", "", "Unique identifier for the cluster") flags.StringVar(&opts.Opts.Arch, "arch", "", "Architecture for Kubernetes cluster deployment (e.g., amd64 or arm64)") flags.StringVarP(&opts.Opts.Platform, "platform", "", "", "Infrastructure platform for deploying the cluster (supports 'libvirt' 'openstack' 'pxe' 'ipxe')") + + // libvirt + flags.StringVarP(&opts.Opts.InfraPlatform.Libvirt.URI, "libvirt-uri", "", "", "URI for libvirt (default: qemu:///system)") + flags.StringVarP(&opts.Opts.InfraPlatform.Libvirt.OSPath, "libvirt-osPath", "", "", "OS path for libvirt") + flags.StringVarP(&opts.Opts.InfraPlatform.Libvirt.CIDR, "libvirt-cidr", "", "", "CIDR for libvirt (default: 192.168.132.0/24)") + flags.StringVarP(&opts.Opts.InfraPlatform.Libvirt.Gateway, "libvirt-gateway", "", "", "Gateway for libvirt (default: 192.168.132.1)") + + // openstack + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.UserName, "openstack-username", "", "", "UserName for openstack (default: admin)") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.Password, "openstack-password", "", "", "Password for openstack") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.TenantName, "openstack-tenantName", "", "", "TenantName for openstack (default: admin)") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.AuthURL, "openstack-authURL", "", "", "AuthURL for openstack (default: http://controller:5000/v3)") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.Region, "openstack-region", "", "", "Region for openstack (default: RegionOne)") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.InternalNetwork, "openstack-internalNetwork", "", "", "InternalNetwork for openstack") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.ExternalNetwork, "openstack-externalNetwork", "", "", "ExternalNetwork for openstack") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.GlanceName, "openstack-glanceName", "", "", "GlanceName for openstack") + flags.StringVarP(&opts.Opts.InfraPlatform.OpenStack.AvailabilityZone, "openstack-availabilityZone", "", "", "AvailabilityZone for openstack (default: nova)") + + // pxe + flags.StringVarP(&opts.Opts.InfraPlatform.PXE.IP, "pxe-ip", "", "", "IP address of local machine for PXE") + flags.StringVarP(&opts.Opts.InfraPlatform.PXE.HTTPRootDir, "pxe-httpRootDir", "", "", "Root directory of HTTP server for PXE (default: /var/www/html/)") + flags.StringVarP(&opts.Opts.InfraPlatform.PXE.TFTPRootDir, "pxe-tftpRootDir", "", "", "Root directory of TFTP server for PXE (default: /var/lib/tftpboot/)") + + // ipxe + flags.StringVarP(&opts.Opts.InfraPlatform.IPXE.IP, "ipxe-ip", "", "", "IP address of local machine for iPXE") + flags.StringVarP(&opts.Opts.InfraPlatform.IPXE.FilePath, "ipxe-filePath", "", "", "Path of config file for iPXE") + flags.StringVarP(&opts.Opts.InfraPlatform.IPXE.OSInstallTreePath, "ipxe-osInstallTreePath", "", "", "Path of OS install tree for iPXE. (default: /var/www/html/)") + flags.StringVarP(&opts.Opts.OSImage.Type, "os-type", "", "", "Operating system type for Kubernetes cluster deployment (e.g., nestos or generalos)") flags.StringVarP(&opts.Opts.UserName, "username", "", "", "User name for node login") flags.StringVarP(&opts.Opts.Password, "password", "", "", "Password for node login") @@ -64,10 +92,6 @@ func SetupDeployCmdOpts(deployCmd *cobra.Command) { flags.StringVarP(&opts.Opts.NKD.BootstrapIgnPort, "bootstrap-ign-port", "", "", "Ignition service port (default: 9080)") flags.StringVarP(&opts.Opts.PreHookScript, "prehook-script", "", "", "Specify a script file or directory to execute before cluster deployment as hooks") flags.StringVarP(&opts.Opts.PostHookYaml, "posthook-yaml", "", "", "Specify a YAML file or directory to apply after cluster deployment using 'kubectl apply'") - flags.StringVarP(&opts.Opts.TFTPServerIP, "tftp-server-ip", "", "", "IP address of TFTP server for PXE") - flags.StringVarP(&opts.Opts.TFTPRootDir, "tftp-root-dir", "", "", "Root directory of TFTP server for PXE (default: /var/lib/tftpboot/)") - flags.StringVarP(&opts.Opts.IPXEFilePath, "ipxe-file-path", "", "", "Path of config file for iPXE") - flags.StringVarP(&opts.Opts.IPXEOSInstallTreePath, "ipxe-os-install-tree-path", "", "", "Path of OS install tree for iPXE. (default: /var/www/html/)") } func SetupDestroyCmdOpts(destroyCmd *cobra.Command) { diff --git a/cmd/deploy.go b/cmd/deploy.go index 8010213..6fcb8e4 100755 --- a/cmd/deploy.go +++ b/cmd/deploy.go @@ -122,6 +122,14 @@ func deployCluster(conf *asset.ClusterAsset) error { hs := httpserver.NewHTTPService(configmanager.GetBootstrapIgnPort()) defer hs.Stop() + if strings.ToLower(conf.Platform) == "pxe" || strings.ToLower(conf.Platform) == "ipxe" { + if err := createCluster(conf, hs); err != nil { + logrus.Errorf("Failed to create cluster: %v", err) + return err + } + return nil + } + if err := createCluster(conf, hs); err != nil { logrus.Errorf("Failed to create cluster: %v", err) return err @@ -183,6 +191,12 @@ func createCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService if err := httpService.AddFileToCache(constants.CertsFiles, certs); err != nil { return err } + + if strings.ToLower(conf.Platform) == "pxe" || strings.ToLower(conf.Platform) == "ipxe" { + if err := addKickstartFiles(httpService, conf); err != nil { + return fmt.Errorf("error adding kickstart file to cache: %v", err) + } + } } if err := configmanager.Persist(); err != nil { @@ -252,9 +266,9 @@ func createCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService case "pxe": pxeConfig := conf.InfraPlatform.(*infraasset.PXEAsset) pxe := &infra.PXE{ + IP: pxeConfig.IP, HTTPServerPort: pxeConfig.HTTPServerPort, HTTPRootDir: pxeConfig.HTTPRootDir, - TFTPServerIP: pxeConfig.TFTPServerIP, TFTPServerPort: pxeConfig.TFTPServerPort, TFTPRootDir: pxeConfig.TFTPRootDir, HTTPService: httpService, @@ -267,10 +281,10 @@ func createCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService case "ipxe": ipxeConfig := conf.InfraPlatform.(*infraasset.IPXEAsset) ipxe := &infra.IPXE{ - IPXEPort: ipxeConfig.IPXEPort, - IPXEFilePath: ipxeConfig.IPXEFilePath, - IPXEOSInstallTreePath: ipxeConfig.IPXEOSInstallTreePath, - HTTPService: httpService, + Port: ipxeConfig.Port, + FilePath: ipxeConfig.FilePath, + OSInstallTreePath: ipxeConfig.OSInstallTreePath, + HTTPService: httpService, } p.SetInfra(ipxe) if err := p.Deploy(); err != nil { @@ -468,3 +482,23 @@ func addIgnitionFiles(httpService *httpserver.HTTPService, conf *asset.ClusterAs return nil } + +func addKickstartFiles(httpService *httpserver.HTTPService, conf *asset.ClusterAsset) error { + // Only one master node + if err := httpService.AddFileToCache(constants.ControlplaneKS, conf.BootConfig.Controlplane.Content); err != nil { + return fmt.Errorf("error adding control plane kickstart file to cache: %v", err) + } + + // multiple master nodes + if len(conf.Master) > 1 { + if err := httpService.AddFileToCache(constants.MasterKS, conf.BootConfig.Master.Content); err != nil { + return fmt.Errorf("error adding master kickstart file to cache: %v", err) + } + } + + if err := httpService.AddFileToCache(constants.WorkerKS, conf.BootConfig.Worker.Content); err != nil { + return fmt.Errorf("error adding worker kickstart file to cache: %v", err) + } + + return nil +} diff --git a/cmd/extend.go b/cmd/extend.go index 35c85e6..5edfc9e 100755 --- a/cmd/extend.go +++ b/cmd/extend.go @@ -28,6 +28,7 @@ import ( "nestos-kubernetes-deployer/pkg/httpserver" "nestos-kubernetes-deployer/pkg/infra" "nestos-kubernetes-deployer/pkg/kubeclient" + "nestos-kubernetes-deployer/pkg/osmanager" "nestos-kubernetes-deployer/pkg/terraform" "os" "strings" @@ -131,6 +132,17 @@ func extendCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService logrus.Errorf("error reading boot config file: %v", err) return err } + + osMgr := osmanager.NewOSManager(conf) + if osMgr.IsNestOS() { + httpService.AddFileToCache(constants.WorkerIgn, data) + } + if osMgr.IsGeneralOS() { + if strings.ToLower(conf.Platform) == "pxe" || strings.ToLower(conf.Platform) == "ipxe" { + httpService.AddFileToCache(constants.WorkerKS, data) + } + } + httpService.AddFileToCache(constants.WorkerIgn, data) if err := configmanager.Persist(); err != nil { @@ -189,9 +201,9 @@ func extendCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService case "pxe": pxeConfig := conf.InfraPlatform.(*infraasset.PXEAsset) pxe := &infra.PXE{ + IP: pxeConfig.IP, HTTPServerPort: pxeConfig.HTTPServerPort, HTTPRootDir: pxeConfig.HTTPRootDir, - TFTPServerIP: pxeConfig.TFTPServerIP, TFTPServerPort: pxeConfig.TFTPServerPort, TFTPRootDir: pxeConfig.TFTPRootDir, HTTPService: httpService, @@ -204,10 +216,10 @@ func extendCluster(conf *asset.ClusterAsset, httpService *httpserver.HTTPService case "ipxe": ipxeConfig := conf.InfraPlatform.(*infraasset.IPXEAsset) ipxe := &infra.IPXE{ - IPXEPort: ipxeConfig.IPXEPort, - IPXEFilePath: ipxeConfig.IPXEFilePath, - IPXEOSInstallTreePath: ipxeConfig.IPXEOSInstallTreePath, - HTTPService: httpService, + Port: ipxeConfig.Port, + FilePath: ipxeConfig.FilePath, + OSInstallTreePath: ipxeConfig.OSInstallTreePath, + HTTPService: httpService, } p.SetInfra(ipxe) if err := p.Extend(); err != nil { diff --git a/cmd/template.go b/cmd/template.go index cc4da89..e29849a 100644 --- a/cmd/template.go +++ b/cmd/template.go @@ -103,8 +103,8 @@ func getDefaultInfraAsset(platform string) interface{} { } case "ipxe": return infraasset.IPXEAsset{ - IPXEPort: "9080", - IPXEOSInstallTreePath: "/var/www/html/", + Port: "9080", + OSInstallTreePath: "/var/www/html/", } default: return errors.New("unsupported platform") diff --git a/pkg/configmanager/asset/infraasset/ipxeasset.go b/pkg/configmanager/asset/infraasset/ipxeasset.go index 8c529b0..d053c8d 100644 --- a/pkg/configmanager/asset/infraasset/ipxeasset.go +++ b/pkg/configmanager/asset/infraasset/ipxeasset.go @@ -22,22 +22,23 @@ import ( ) type IPXEAsset struct { - IPXEPort string `yaml:"ipxePort"` - IPXEFilePath string `yaml:"ipxeFilePath"` - IPXEOSInstallTreePath string `yaml:"ipxeOSInstallTreePath"` + IP string + Port string + FilePath string `yaml:"filePath"` + OSInstallTreePath string `yaml:"osInstallTreePath"` } func (ia *IPXEAsset) InitAsset(ipxeMap map[string]interface{}, opts *opts.OptionsList, args ...interface{}) (InfraAsset, error) { - updateFieldFromMap("ipxePort", &ia.IPXEPort, ipxeMap) - asset.SetStringValue(&ia.IPXEPort, opts.InfraPlatform.IPXE.IPXEPort, "9080") + updateFieldFromMap("port", &ia.Port, ipxeMap) + asset.SetStringValue(&ia.Port, opts.InfraPlatform.IPXE.Port, "9080") - updateFieldFromMap("ipxeFilePath", &ia.IPXEFilePath, ipxeMap) - // if err := asset.CheckStringValue(&ia.IPXEFilePath, opts.InfraPlatform.IPXE.IPXEFilePath, "ipxe-file-path"); err != nil { - // return nil, err - // } + updateFieldFromMap("filePath", &ia.FilePath, ipxeMap) + if err := asset.CheckStringValue(&ia.FilePath, opts.InfraPlatform.IPXE.FilePath, "ipxe-osInstallTreePath"); err != nil { + return nil, err + } - updateFieldFromMap("ipxeOSInstallTreePath", &ia.IPXEOSInstallTreePath, ipxeMap) - asset.SetStringValue(&ia.IPXEOSInstallTreePath, opts.InfraPlatform.IPXE.IPXEOSInstallTreePath, "/var/www/html/") + updateFieldFromMap("osInstallTreePath", &ia.OSInstallTreePath, ipxeMap) + asset.SetStringValue(&ia.OSInstallTreePath, opts.InfraPlatform.IPXE.OSInstallTreePath, "/var/www/html/") return ia, nil } diff --git a/pkg/configmanager/asset/infraasset/libvirtasset.go b/pkg/configmanager/asset/infraasset/libvirtasset.go index 8e93d8c..7fc9c40 100644 --- a/pkg/configmanager/asset/infraasset/libvirtasset.go +++ b/pkg/configmanager/asset/infraasset/libvirtasset.go @@ -33,7 +33,7 @@ func (la *LibvirtAsset) InitAsset(libvirtMap map[string]interface{}, opts *opts. asset.SetStringValue(&la.URI, opts.InfraPlatform.Libvirt.URI, "qemu:///system") updateFieldFromMap("osPath", &la.OSPath, libvirtMap) - if err := asset.CheckStringValue(&la.OSPath, opts.InfraPlatform.Libvirt.OSPath, "os-path"); err != nil { + if err := asset.CheckStringValue(&la.OSPath, opts.InfraPlatform.Libvirt.OSPath, "libvirt-osPath"); err != nil { return nil, err } diff --git a/pkg/configmanager/asset/infraasset/openstackasset.go b/pkg/configmanager/asset/infraasset/openstackasset.go index 628b857..de87f8d 100644 --- a/pkg/configmanager/asset/infraasset/openstackasset.go +++ b/pkg/configmanager/asset/infraasset/openstackasset.go @@ -52,17 +52,17 @@ func (oa *OpenStackAsset) InitAsset(openstackMap map[string]interface{}, opts *o asset.SetStringValue(&oa.Region, opts.InfraPlatform.OpenStack.Region, "RegionOne") updateFieldFromMap("internalNetwork", &oa.InternalNetwork, openstackMap) - if err := asset.CheckStringValue(&oa.InternalNetwork, opts.InfraPlatform.OpenStack.InternalNetwork, "openstack-internal-network"); err != nil { + if err := asset.CheckStringValue(&oa.InternalNetwork, opts.InfraPlatform.OpenStack.InternalNetwork, "openstack-internalNetwork"); err != nil { return nil, err } updateFieldFromMap("externalNetwork", &oa.ExternalNetwork, openstackMap) - if err := asset.CheckStringValue(&oa.ExternalNetwork, opts.InfraPlatform.OpenStack.ExternalNetwork, "openstack-external-network"); err != nil { + if err := asset.CheckStringValue(&oa.ExternalNetwork, opts.InfraPlatform.OpenStack.ExternalNetwork, "openstack-externalNetwork"); err != nil { return nil, err } updateFieldFromMap("glanceName", &oa.GlanceName, openstackMap) - if err := asset.CheckStringValue(&oa.GlanceName, opts.InfraPlatform.OpenStack.GlanceName, "openstack-glance-name"); err != nil { + if err := asset.CheckStringValue(&oa.GlanceName, opts.InfraPlatform.OpenStack.GlanceName, "openstack-glanceName"); err != nil { return nil, err } diff --git a/pkg/configmanager/asset/infraasset/pxeasset.go b/pkg/configmanager/asset/infraasset/pxeasset.go index 80e30f3..ffaba7d 100644 --- a/pkg/configmanager/asset/infraasset/pxeasset.go +++ b/pkg/configmanager/asset/infraasset/pxeasset.go @@ -22,25 +22,25 @@ import ( ) type PXEAsset struct { + IP string HTTPServerPort string `yaml:"httpServerPort"` HTTPRootDir string `yaml:"httpRootDir"` - TFTPServerIP string `yaml:"tftpServerIP"` TFTPServerPort string `yaml:"tftpServerPort"` TFTPRootDir string `yaml:"tftpRootDir"` } func (pa *PXEAsset) InitAsset(pxeMap map[string]interface{}, opts *opts.OptionsList, args ...interface{}) (InfraAsset, error) { + updateFieldFromMap("ip", &pa.IP, pxeMap) + if err := asset.CheckStringValue(&pa.IP, opts.InfraPlatform.PXE.IP, "pxe-ip"); err != nil { + return nil, err + } + updateFieldFromMap("httpServerPort", &pa.HTTPServerPort, pxeMap) asset.SetStringValue(&pa.HTTPServerPort, opts.InfraPlatform.PXE.HTTPServerPort, "9080") updateFieldFromMap("httpRootDir", &pa.HTTPRootDir, pxeMap) asset.SetStringValue(&pa.HTTPRootDir, opts.InfraPlatform.PXE.HTTPRootDir, "/var/www/html/") - updateFieldFromMap("tftpServerIP", &pa.TFTPServerIP, pxeMap) - if err := asset.CheckStringValue(&pa.TFTPServerIP, opts.InfraPlatform.PXE.TFTPServerIP, "tftp-server-ip"); err != nil { - return nil, err - } - updateFieldFromMap("tftpServerPort", &pa.TFTPServerPort, pxeMap) asset.SetStringValue(&pa.TFTPServerPort, opts.InfraPlatform.PXE.TFTPServerPort, "69") diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 2d95efe..1c8d9fd 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -56,6 +56,10 @@ const ( MasterMergeIgn = "master-merge.ign" WorkerIgn = "worker.ign" WorkerMergeIgn = "worker-merge.ign" + ControlplaneKS = "controlplane.cfg" + MasterKS = "master.cfg" + WorkerKS = "worker.cfg" + IPXECfg = "ipxe.cfg" CertsFiles = "certs.json" diff --git a/pkg/infra/ipxe.go b/pkg/infra/ipxe.go index 3a45556..ca2ced6 100644 --- a/pkg/infra/ipxe.go +++ b/pkg/infra/ipxe.go @@ -18,15 +18,16 @@ package infra import ( "fmt" + "nestos-kubernetes-deployer/pkg/constants" "nestos-kubernetes-deployer/pkg/httpserver" "os" ) type IPXE struct { - IPXEPort string - IPXEFilePath string - IPXEOSInstallTreePath string - HTTPService *httpserver.HTTPService + Port string + FilePath string + OSInstallTreePath string + HTTPService *httpserver.HTTPService } func (i *IPXE) deployHTTP(port string, dirPath string, filePath string) error { @@ -38,7 +39,7 @@ func (i *IPXE) deployHTTP(port string, dirPath string, filePath string) error { return err } - if err := i.HTTPService.AddFileToCache(filePath, fileContent); err != nil { + if err := i.HTTPService.AddFileToCache(constants.IPXECfg, fileContent); err != nil { return err } @@ -50,7 +51,7 @@ func (i *IPXE) deployHTTP(port string, dirPath string, filePath string) error { } func (i *IPXE) Deploy() error { - if err := i.deployHTTP(i.IPXEPort, i.IPXEOSInstallTreePath, i.IPXEFilePath); err != nil { + if err := i.deployHTTP(i.Port, i.OSInstallTreePath, i.FilePath); err != nil { return err } @@ -58,7 +59,7 @@ func (i *IPXE) Deploy() error { } func (i *IPXE) Extend() error { - if err := i.deployHTTP(i.IPXEPort, i.IPXEOSInstallTreePath, i.IPXEFilePath); err != nil { + if err := i.deployHTTP(i.Port, i.OSInstallTreePath, i.FilePath); err != nil { return err } diff --git a/pkg/infra/pxe.go b/pkg/infra/pxe.go index aefa7fe..b0a7ff6 100644 --- a/pkg/infra/pxe.go +++ b/pkg/infra/pxe.go @@ -22,9 +22,9 @@ import ( ) type PXE struct { + IP string HTTPServerPort string HTTPRootDir string - TFTPServerIP string TFTPServerPort string TFTPRootDir string HTTPService *httpserver.HTTPService @@ -60,7 +60,8 @@ func (p *PXE) Deploy() error { if err := p.deployHTTP(p.HTTPServerPort, p.HTTPRootDir); err != nil { return err } - if err := p.deployTFTP(p.TFTPServerIP, p.TFTPServerPort, p.TFTPRootDir); err != nil { + + if err := p.deployTFTP(p.IP, p.TFTPServerPort, p.TFTPRootDir); err != nil { return err } @@ -71,7 +72,7 @@ func (p *PXE) Extend() error { if err := p.deployHTTP(p.HTTPServerPort, p.HTTPRootDir); err != nil { return err } - if err := p.deployTFTP(p.TFTPServerIP, p.TFTPServerPort, p.TFTPRootDir); err != nil { + if err := p.deployTFTP(p.IP, p.TFTPServerPort, p.TFTPRootDir); err != nil { return err } diff --git a/pkg/osmanager/bootconfig/kickstart/kickstart.go b/pkg/osmanager/bootconfig/kickstart/kickstart.go index eae956a..e59d331 100644 --- a/pkg/osmanager/bootconfig/kickstart/kickstart.go +++ b/pkg/osmanager/bootconfig/kickstart/kickstart.go @@ -4,15 +4,10 @@ import ( "nestos-kubernetes-deployer/pkg/configmanager/asset" "nestos-kubernetes-deployer/pkg/constants" "nestos-kubernetes-deployer/pkg/osmanager/bootconfig" + "os" "path/filepath" ) -const ( - kickstartControlplane = "controlplane.cfg" - kickstartMaster = "master.cfg" - kickstartWorker = "worker.cfg" -) - type Kickstart struct { ClusterAsset *asset.ClusterAsset BootstrapBaseurl string @@ -39,17 +34,17 @@ var ( ) func (c *Kickstart) GenerateBootConfig() error { - if err := c.generateNodeConfig(constants.Controlplane, constants.InitClusterService, constants.InitClusterYaml, kickstartControlplane); err != nil { + if err := c.generateNodeConfig(constants.Controlplane, constants.InitClusterService, constants.InitClusterYaml, constants.ControlplaneKS); err != nil { return err } if len(c.ClusterAsset.Master) > 1 { - if err := c.generateNodeConfig(constants.Master, constants.JoinMasterService, "", kickstartMaster); err != nil { + if err := c.generateNodeConfig(constants.Master, constants.JoinMasterService, "", constants.MasterKS); err != nil { return err } } - if err := c.generateNodeConfig(constants.Worker, constants.JoinWorkerService, "", kickstartWorker); err != nil { + if err := c.generateNodeConfig(constants.Worker, constants.JoinWorkerService, "", constants.WorkerKS); err != nil { return err } @@ -69,18 +64,27 @@ func (c *Kickstart) generateNodeConfig(nodeType, service string, yamlPath string return err } + ksPath := filepath.Join(savePath, filename) + ksContent, err := os.ReadFile(ksPath) + if err != nil { + return err + } + switch nodeType { case constants.Controlplane: c.ClusterAsset.BootConfig.Controlplane = asset.BootFile{ - Path: filepath.Join(savePath, filename), + Content: ksContent, + Path: ksPath, } case constants.Master: c.ClusterAsset.BootConfig.Master = asset.BootFile{ - Path: filepath.Join(savePath, filename), + Content: ksContent, + Path: ksPath, } case constants.Worker: c.ClusterAsset.BootConfig.Worker = asset.BootFile{ - Path: filepath.Join(savePath, filename), + Content: ksContent, + Path: ksPath, } } diff --git a/pkg/terraform/generate.go b/pkg/terraform/generate.go index d6c4890..1cf08aa 100644 --- a/pkg/terraform/generate.go +++ b/pkg/terraform/generate.go @@ -217,12 +217,7 @@ func (infra *Infra) Generate(conf *asset.ClusterAsset, node string) (err error) defer outputFile.Close() // Read template. - osType := strings.ToLower(conf.OSImage.Type) - if osType != "nestos" { - osType = "generalos" - } - - tfFilePath := filepath.Join("terraform", osType, conf.Platform, fmt.Sprintf("%s.tf.template", node)) + tfFilePath := filepath.Join("terraform", strings.ToLower(conf.OSImage.Type), conf.Platform, fmt.Sprintf("%s.tf.template", node)) tfFile, err := data.Assets.Open(tfFilePath) if err != nil { return err -- Gitee