From: Yolanda Robla Date: Mon, 18 Mar 2019 17:05:55 +0000 (+0100) Subject: Allow to specify the path for private key X-Git-Tag: akraino_r1~22 X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=commitdiff_plain;h=2b7b84e07d5ea6d864fc63a75929fdc3ab46a88d;p=kni%2Finstaller.git Allow to specify the path for private key Change-Id: I934f7326d53ca503f2b81deba58f54be986951bb --- diff --git a/Makefile b/Makefile index 3a119fd..9904276 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,10 @@ ifndef RELEASES_URL override RELEASES_URL = "https://releases-rhcos.svc.ci.openshift.org/storage/releases/" endif +ifndef SSH_KEY_PATH +override SSH_KEY_PATH = "${HOME}/.ssh/id_rsa" +endif + all: watch binary: @@ -40,7 +44,7 @@ clean: deploy: @echo "Launching cluster deployment bin/$(GONAME)" - @./bin/$(GONAME) generate --installer_path $(INSTALLER_PATH) --build_path $(BUILDDIR) --base_repository $(BASE_REPO) --base_path $(BASE_PATH) --secrets_repository $(CREDENTIALS) --site_repository $(SITE_REPO) --settings_path $(SETTINGS_PATH) --master_memory_mb $(MASTER_MEMORY_MB) + @./bin/$(GONAME) generate --installer_path $(INSTALLER_PATH) --build_path $(BUILDDIR) --base_repository $(BASE_REPO) --base_path $(BASE_PATH) --secrets_repository $(CREDENTIALS) --site_repository $(SITE_REPO) --settings_path $(SETTINGS_PATH) --master_memory_mb $(MASTER_MEMORY_MB) --ssh_key_path $(SSH_KEY_PATH) images: @echo "Launching image generation" @@ -51,7 +55,7 @@ help: @echo " binary to generate a new openshift-install binary" @echo " build to produce the installer binary" @echo " clean to destroy a previously created cluster and remove build contents" - @echo " deploy CREDENTIALS= BASE_REPO= BASE_PATH= SITE_REPO= SETTINGS_PATH=" + @echo " deploy CREDENTIALS= BASE_REPO= BASE_PATH= SITE_REPO= SETTINGS_PATH= SSH_KEY_PATH=" @echo " images to download baremetal images" .PHONY: build get install run watch start stop restart clean diff --git a/cmd/generate.go b/cmd/generate.go index 78db21f..762be5b 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -37,6 +37,7 @@ var generateCmd = &cobra.Command{ siteRepository, _ := cmd.Flags().GetString("site_repository") settingsPath, _ := cmd.Flags().GetString("settings_path") masterMemoryMB, _ := cmd.Flags().GetString("master_memory_mb") + sshKeyPath, _ := cmd.Flags().GetString("ssh_key_path") // Check if build path exists, create if not buildPath, _ := cmd.Flags().GetString("build_path") @@ -50,7 +51,7 @@ var generateCmd = &cobra.Command{ } // start generation process - g := generator.New(baseRepo, basePath, installerPath, secretsRepository, siteRepository, settingsPath, buildPath, masterMemoryMB) + g := generator.New(baseRepo, basePath, installerPath, secretsRepository, siteRepository, settingsPath, buildPath, masterMemoryMB, sshKeyPath) g.GenerateManifests() }, } @@ -74,5 +75,7 @@ func init() { generateCmd.MarkFlagRequired("settings_path") generateCmd.Flags().StringP("master_memory_mb", "", "", "MB of memory to use for master node (libvirt)") + generateCmd.Flags().StringP("ssh_key_path", "", "", "Path for the SSH private key to retrieve private repos") + generateCmd.MarkFlagRequired("ssh_key_path") } diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go index a6cc23f..aba2d20 100644 --- a/pkg/generator/generator.go +++ b/pkg/generator/generator.go @@ -27,12 +27,13 @@ type Generator struct { settingsPath string buildPath string masterMemoryMB string + sshKeyPath string secrets map[string]string } // New constructor for the generator -func New(baseRepo string, basePath string, installerPath string, secretsRepo string, siteRepo string, settingsPath string, buildPath string, masterMemoryMB string) Generator { - g := Generator{baseRepo, basePath, installerPath, secretsRepo, siteRepo, settingsPath, buildPath, masterMemoryMB, make(map[string]string)} +func New(baseRepo string, basePath string, installerPath string, secretsRepo string, siteRepo string, settingsPath string, buildPath string, masterMemoryMB string, sshKeyPath string) Generator { + g := Generator{baseRepo, basePath, installerPath, secretsRepo, siteRepo, settingsPath, buildPath, masterMemoryMB, sshKeyPath, make(map[string]string)} return g } @@ -56,8 +57,11 @@ func (g Generator) DownloadArtifacts() { // Retrieve private key and b64encode it, if secrets is not local finalURL := "" if !strings.HasPrefix(g.secretsRepo, "file://") { - rsaPrivateLocation := fmt.Sprintf("%s/.ssh/id_rsa", os.Getenv("HOME")) - priv, _ := ioutil.ReadFile(rsaPrivateLocation) + priv, err := ioutil.ReadFile(g.sshKeyPath) + if err != nil { + log.Fatal(fmt.Sprintf("Error reading secret key: %s", err)) + os.Exit(1) + } sEnc := base64.StdEncoding.EncodeToString(priv) finalURL = fmt.Sprintf("%s?sshkey=%s", g.secretsRepo, sEnc) } else {