Allow to specify the path for private key 84/484/1
authorYolanda Robla <yroblamo@redhat.com>
Mon, 18 Mar 2019 17:05:55 +0000 (18:05 +0100)
committerYolanda Robla <yroblamo@redhat.com>
Mon, 18 Mar 2019 17:05:55 +0000 (18:05 +0100)
Change-Id: I934f7326d53ca503f2b81deba58f54be986951bb

Makefile
cmd/generate.go
pkg/generator/generator.go

index 3a119fd..9904276 100644 (file)
--- 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=<github_secret_repo> BASE_REPO=<github_manifests_repo> BASE_PATH=<subpath_on_manifests_repo> SITE_REPO=<github_site_repo> SETTINGS_PATH=<subpath_on_site_repo>"
+       @echo "  deploy CREDENTIALS=<github_secret_repo> BASE_REPO=<github_manifests_repo> BASE_PATH=<subpath_on_manifests_repo> SITE_REPO=<github_site_repo> SETTINGS_PATH=<subpath_on_site_repo> SSH_KEY_PATH=<path_to_id_rsa>"
        @echo "  images to download baremetal images"
 
 .PHONY: build get install run watch start stop restart clean
index 78db21f..762be5b 100644 (file)
@@ -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")
 
 }
index a6cc23f..aba2d20 100644 (file)
@@ -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 {