diff --git a/cli/cmd/install.go b/cli/cmd/install.go index 7ac5ebe2a..f7634519e 100644 --- a/cli/cmd/install.go +++ b/cli/cmd/install.go @@ -1,8 +1,11 @@ package cmd import ( + "github.com/creasty/defaults" "github.com/spf13/cobra" + "github.com/up9inc/mizu/cli/config/configStructs" "github.com/up9inc/mizu/cli/telemetry" + "github.com/up9inc/mizu/logger" ) var installCmd = &cobra.Command{ @@ -17,4 +20,11 @@ var installCmd = &cobra.Command{ func init() { rootCmd.AddCommand(installCmd) + + defaultInstallConfig := configStructs.InstallConfig{} + if err := defaults.Set(&defaultInstallConfig); err != nil { + logger.Log.Debug(err) + } + + installCmd.Flags().BoolP(configStructs.OutInstallName, "o", defaultInstallConfig.Out, "print (to stdout) Kubernetes manifest used to install Mizu Pro edition") } diff --git a/cli/cmd/installRunner.go b/cli/cmd/installRunner.go index 8262dc3b9..80c509f16 100644 --- a/cli/cmd/installRunner.go +++ b/cli/cmd/installRunner.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "strings" "github.com/up9inc/mizu/cli/bucket" "github.com/up9inc/mizu/cli/config" @@ -9,12 +10,23 @@ import ( ) func runMizuInstall() { - bucketProvider := bucket.NewProvider(config.Config.Install.TemplateUrl, bucket.DefaultTimeout) - installTemplate, err := bucketProvider.GetInstallTemplate(config.Config.Install.TemplateName) - if err != nil { - logger.Log.Errorf("Failed getting install template, err: %v", err) + if config.Config.Install.Out { + bucketProvider := bucket.NewProvider(config.Config.Install.TemplateUrl, bucket.DefaultTimeout) + installTemplate, err := bucketProvider.GetInstallTemplate(config.Config.Install.TemplateName) + if err != nil { + logger.Log.Errorf("Failed getting install template, err: %v", err) + return + } + + fmt.Print(installTemplate) return } - fmt.Print(installTemplate) + var sb strings.Builder + sb.WriteString("Hello! This command can be used to install Mizu Pro edition on your Kubernetes cluster.") + sb.WriteString("\nPlease run:") + sb.WriteString("\n\tmizu install -o | kubectl apply -f -") + sb.WriteString("\n\nor use helm chart as described in https://getmizu.io/docs/installing-mizu/centralized-installation\n") + + fmt.Print(sb.String()) } diff --git a/cli/config/configStructs/installConfig.go b/cli/config/configStructs/installConfig.go index aac6de81a..bfc876a5f 100644 --- a/cli/config/configStructs/installConfig.go +++ b/cli/config/configStructs/installConfig.go @@ -1,6 +1,11 @@ package configStructs +const ( + OutInstallName = "out" +) + type InstallConfig struct { TemplateUrl string `yaml:"template-url" default:"https://storage.googleapis.com/static.up9.io/mizu/helm-template"` TemplateName string `yaml:"template-name" default:"helm-template.yaml"` + Out bool `yaml:"out"` }