diff --git a/build/zitadel/Dockerfile b/build/zitadel/Dockerfile index cc8c972ac7..eea5666ebf 100644 --- a/build/zitadel/Dockerfile +++ b/build/zitadel/Dockerfile @@ -21,9 +21,9 @@ RUN apt install openssl tzdata tar # cockroach binary used to backup database RUN mkdir /usr/local/lib/cockroach -RUN wget -qO- https://binaries.cockroachdb.com/cockroach-v21.2.5.linux-amd64.tgz \ - | tar xvz && cp -i cockroach-v21.2.5.linux-amd64/cockroach /usr/local/bin/ -RUN rm -r cockroach-v21.2.5.linux-amd64 +RUN wget -qO- https://binaries.cockroachdb.com/cockroach-v21.2.9.linux-amd64.tgz \ + | tar xvz && cp -i cockroach-v21.2.9.linux-amd64/cockroach /usr/local/bin/ +RUN rm -r cockroach-v21.2.9.linux-amd64 ####################### ## generates static files diff --git a/cmd/admin/key/masterkey.go b/cmd/admin/key/masterkey.go index cae2535661..e1d3792b8a 100644 --- a/cmd/admin/key/masterkey.go +++ b/cmd/admin/key/masterkey.go @@ -21,6 +21,9 @@ var ( ) func AddMasterKeyFlag(cmd *cobra.Command) { + if cmd.PersistentFlags().Lookup(flagMasterKey) != nil { + return + } cmd.PersistentFlags().StringP(flagMasterKey, flagMasterKeyShort, "", "path to the masterkey for en/decryption keys") cmd.PersistentFlags().String(flagMasterKeyArg, "", "masterkey as argument for en/decryption keys") cmd.PersistentFlags().Bool(flagMasterKeyEnv, false, "read masterkey for en/decryption keys from environment variable (ZITADEL_MASTERKEY)") diff --git a/cmd/admin/setup/config.go b/cmd/admin/setup/config.go index 95248ae335..ccdd89ff5f 100644 --- a/cmd/admin/setup/config.go +++ b/cmd/admin/setup/config.go @@ -36,6 +36,7 @@ func MustNewConfig(v *viper.Viper) *Config { mapstructure.StringToSliceHookFunc(","), )), ) + logging.OnError(err).Fatal("unable to read default config") err = config.Log.SetLogger() logging.OnError(err).Fatal("unable to set logger") @@ -58,6 +59,12 @@ func MustNewSteps(v *viper.Viper) *Steps { err := v.ReadConfig(bytes.NewBuffer(defaultSteps)) logging.OnError(err).Fatal("unable to read setup steps") + for _, file := range stepFiles { + v.SetConfigFile(file) + err := v.MergeInConfig() + logging.WithFields("file", file).OnError(err).Warn("unable to read setup file") + } + steps := new(Steps) err = v.Unmarshal(steps, viper.DecodeHook(mapstructure.ComposeDecodeHookFunc( diff --git a/cmd/admin/setup/setup.go b/cmd/admin/setup/setup.go index 69d7e38e59..f64f65e8a7 100644 --- a/cmd/admin/setup/setup.go +++ b/cmd/admin/setup/setup.go @@ -18,10 +18,11 @@ import ( var ( //go:embed steps.yaml defaultSteps []byte + stepFiles []string ) func New() *cobra.Command { - return &cobra.Command{ + cmd := &cobra.Command{ Use: "setup", Short: "setup ZITADEL instance", Long: `sets up data to start ZITADEL. @@ -37,6 +38,15 @@ Requirements: Setup(config, steps, masterKey) }, } + + Flags(cmd) + + return cmd +} + +func Flags(cmd *cobra.Command) { + cmd.PersistentFlags().StringArrayVar(&stepFiles, "steps", nil, "paths to step files to overwrite default steps") + key.AddMasterKeyFlag(cmd) } func Setup(config *Config, steps *Steps, masterKey string) { @@ -79,3 +89,13 @@ func Setup(config *Config, steps *Steps, masterKey string) { err = migration.Migrate(ctx, eventstoreClient, steps.S3DefaultInstance) logging.OnError(err).Fatal("unable to migrate step 4") } + +func initSteps(v *viper.Viper, files ...string) func() { + return func() { + for _, file := range files { + v.SetConfigFile(file) + err := v.MergeInConfig() + logging.WithFields("file", file).OnError(err).Warn("unable to read setup file") + } + } +} diff --git a/cmd/admin/start/flags.go b/cmd/admin/start/flags.go index 5768401ea5..0d96229e6f 100644 --- a/cmd/admin/start/flags.go +++ b/cmd/admin/start/flags.go @@ -14,7 +14,6 @@ func startFlags(cmd *cobra.Command) { bindBoolFlag(cmd, "externalSecure", "if ZITADEL will be served on HTTPS") key.AddMasterKeyFlag(cmd) - } func bindStringFlag(cmd *cobra.Command, name, description string) { diff --git a/cmd/admin/start/start_from_init.go b/cmd/admin/start/start_from_init.go index bbdf93e0e4..ca2bfc9795 100644 --- a/cmd/admin/start/start_from_init.go +++ b/cmd/admin/start/start_from_init.go @@ -38,6 +38,7 @@ Requirements: } startFlags(cmd) + setup.Flags(cmd) return cmd } diff --git a/cmd/zitadel.go b/cmd/zitadel.go index 627fae25e5..fbf281f1dc 100644 --- a/cmd/zitadel.go +++ b/cmd/zitadel.go @@ -3,6 +3,7 @@ package cmd import ( "bytes" _ "embed" + "errors" "io" "strings" @@ -25,8 +26,8 @@ func New(out io.Writer, in io.Reader, args []string) *cobra.Command { Use: "zitadel", Short: "The ZITADEL CLI let's you interact with ZITADEL", Long: `The ZITADEL CLI let's you interact with ZITADEL`, - Run: func(cmd *cobra.Command, args []string) { - logging.New().Info("hello world") + RunE: func(cmd *cobra.Command, args []string) error { + return errors.New("no additional command provided") }, }