From 549d4f659bd410d404b8a2be65bc7ecd96a6323e Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Wed, 20 Dec 2023 13:14:05 -0500 Subject: [PATCH] deprecate --already-initialized and imply the same behavior when --home ZITI_HOME is set and ZITI_HOME/db exists on subsequent runs --- ziti/cmd/edge/quickstart.go | 135 +++++++++++++++++++----------------- 1 file changed, 70 insertions(+), 65 deletions(-) diff --git a/ziti/cmd/edge/quickstart.go b/ziti/cmd/edge/quickstart.go index b77b3bb91..431549b0f 100644 --- a/ziti/cmd/edge/quickstart.go +++ b/ziti/cmd/edge/quickstart.go @@ -65,7 +65,7 @@ func NewQuickStartCmd(out io.Writer, errOut io.Writer, context context.Context) cmd := &cobra.Command{ Use: "quickstart", Short: "runs a Controller and Router in quickstart mode", - Long: `runs a Controller and Router in quickstart mode. By default, this will create a totally ephemeral network, only valid while running.`, + Long: "runs a Controller and Router as a single process; state is deleted on exit unless --home", Run: func(cmd *cobra.Command, args []string) { options.out = out options.errOut = errOut @@ -75,7 +75,7 @@ func NewQuickStartCmd(out io.Writer, errOut io.Writer, context context.Context) cmd.Flags().StringVarP(&options.Username, "username", "u", "", "Username to use when creating the Ziti Edge Controller. default: admin") cmd.Flags().StringVarP(&options.Password, "password", "p", "", "Password to use for authenticating to the Ziti Edge Controller. default: admin") - cmd.Flags().BoolVar(&options.AlreadyInitialized, "already-initialized", false, "Specifies the PKI does not need to be created and the db does not need to be initialized. Recommended to be combined with --home. If --home is not specified the environment will be destroyed on shutdown! default: false") + cmd.Flags().BoolVar(&options.AlreadyInitialized, "already-initialized", false, "deprecated and implied by --home on subsequent runs") cmd.Flags().StringVar(&options.Home, "home", "", "Sets the directory the environment should be installed into. Defaults to a temporary directory. If specified, the environment will not be removed on exit.") cmd.Flags().StringVar(&options.ControllerAddress, "ctrl-address", "", "Sets the advertised address for the control plane and API. current: "+currentCtrlAddy) @@ -121,6 +121,7 @@ func (o *QuickstartOpts) run(ctx context.Context) { } if o.Password == "" { o.Password = "admin" + logrus.Warn("using default password") } ctrlYaml := o.Home + "/ctrl.yaml" @@ -140,13 +141,19 @@ func (o *QuickstartOpts) run(ctx context.Context) { routerName = routerNameFromEnv } + if o.AlreadyInitialized { + logrus.Warn("deprecated option --already-initialized has no effect and is internally implied by --home on subsequent runs") + } + dbDir := o.Home + "/db" - _, _ = fmt.Fprintf(os.Stdout, "creating the tmp dir [%v] for the database.\n\n", dbDir) - _ = os.MkdirAll(dbDir, 0o777) + if _, err := os.Stat(dbDir); !os.IsNotExist(err) { + o.AlreadyInitialized = true + } else { + _ = os.MkdirAll(dbDir, 0o777) + logrus.Debugf("made directory '%s'", dbDir) - o.createMinimalPki() + o.createMinimalPki() - if !o.AlreadyInitialized { ctrl := create.NewCmdCreateConfigController() ctrl.SetArgs([]string{ fmt.Sprintf("--output=%s", ctrlYaml), @@ -303,69 +310,67 @@ func (o *QuickstartOpts) run(ctx context.Context) { } func (o *QuickstartOpts) createMinimalPki() { - if !o.AlreadyInitialized { - where := o.Home + "/pki" - fmt.Println("emitting a minimal PKI") + where := o.Home + "/pki" + fmt.Println("emitting a minimal PKI") - //ziti pki create ca --pki-root="$pkiDir" --ca-file="root-ca" --ca-name="root-ca" - ca := pki.NewCmdPKICreateCA(o.out, o.errOut) - ca.SetArgs([]string{ - fmt.Sprintf("--pki-root=%s", where), - fmt.Sprintf("--ca-file=%s", "root-ca"), - fmt.Sprintf("--ca-name=%s", "root-ca"), - }) - pkiErr := ca.Execute() - if pkiErr != nil { - logrus.Fatal(pkiErr) - } + //ziti pki create ca --pki-root="$pkiDir" --ca-file="root-ca" --ca-name="root-ca" + ca := pki.NewCmdPKICreateCA(o.out, o.errOut) + ca.SetArgs([]string{ + fmt.Sprintf("--pki-root=%s", where), + fmt.Sprintf("--ca-file=%s", "root-ca"), + fmt.Sprintf("--ca-name=%s", "root-ca"), + }) + pkiErr := ca.Execute() + if pkiErr != nil { + logrus.Fatal(pkiErr) + } - //ziti pki create intermediate --pki-root "$pkiDir" --ca-name "root-ca" --intermediate-name "intermediate-ca" --intermediate-file "intermediate-ca" --max-path-len "1" - intermediate := pki.NewCmdPKICreateIntermediate(o.out, o.errOut) - intermediate.SetArgs([]string{ - fmt.Sprintf("--pki-root=%s", where), - fmt.Sprintf("--ca-name=%s", "root-ca"), - fmt.Sprintf("--intermediate-name=%s", "intermediate-ca"), - fmt.Sprintf("--intermediate-file=%s", "intermediate-ca"), - "--max-path-len=1", - }) - intErr := intermediate.Execute() - if intErr != nil { - logrus.Fatal(intErr) - } + //ziti pki create intermediate --pki-root "$pkiDir" --ca-name "root-ca" --intermediate-name "intermediate-ca" --intermediate-file "intermediate-ca" --max-path-len "1" + intermediate := pki.NewCmdPKICreateIntermediate(o.out, o.errOut) + intermediate.SetArgs([]string{ + fmt.Sprintf("--pki-root=%s", where), + fmt.Sprintf("--ca-name=%s", "root-ca"), + fmt.Sprintf("--intermediate-name=%s", "intermediate-ca"), + fmt.Sprintf("--intermediate-file=%s", "intermediate-ca"), + "--max-path-len=1", + }) + intErr := intermediate.Execute() + if intErr != nil { + logrus.Fatal(intErr) + } - //ziti pki create server --pki-root="${ZITI_HOME}/pki" --ca-name "intermediate-ca" --server-name "server" --server-file "server" --dns "localhost,${ZITI_HOSTNAME}" - svr := pki.NewCmdPKICreateServer(o.out, o.errOut) - var ips = "127.0.0.1,::1" - ip_override := os.Getenv("ZITI_CTRL_EDGE_IP_OVERRIDE") - if ip_override != "" { - ips = ips + "," + ip_override - } - svr.SetArgs([]string{ - fmt.Sprintf("--pki-root=%s", where), - fmt.Sprintf("--ca-name=%s", "intermediate-ca"), - fmt.Sprintf("--server-name=%s", "server"), - fmt.Sprintf("--server-file=%s", "server"), - fmt.Sprintf("--dns=%s,%s", "localhost", helpers.GetCtrlAdvertisedAddress()), - fmt.Sprintf("--ip=%s", ips), - }) - svrErr := svr.Execute() - if svrErr != nil { - logrus.Fatal(svrErr) - } + //ziti pki create server --pki-root="${ZITI_HOME}/pki" --ca-name "intermediate-ca" --server-name "server" --server-file "server" --dns "localhost,${ZITI_HOSTNAME}" + svr := pki.NewCmdPKICreateServer(o.out, o.errOut) + var ips = "127.0.0.1,::1" + ip_override := os.Getenv("ZITI_CTRL_EDGE_IP_OVERRIDE") + if ip_override != "" { + ips = ips + "," + ip_override + } + svr.SetArgs([]string{ + fmt.Sprintf("--pki-root=%s", where), + fmt.Sprintf("--ca-name=%s", "intermediate-ca"), + fmt.Sprintf("--server-name=%s", "server"), + fmt.Sprintf("--server-file=%s", "server"), + fmt.Sprintf("--dns=%s,%s", "localhost", helpers.GetCtrlAdvertisedAddress()), + fmt.Sprintf("--ip=%s", ips), + }) + svrErr := svr.Execute() + if svrErr != nil { + logrus.Fatal(svrErr) + } - //ziti pki create client --pki-root="${ZITI_HOME}/pki" --ca-name "intermediate-ca" --client-name "client" --client-file "client" --key-file "server" - client := pki.NewCmdPKICreateClient(o.out, o.errOut) - client.SetArgs([]string{ - fmt.Sprintf("--pki-root=%s", where), - fmt.Sprintf("--ca-name=%s", "intermediate-ca"), - fmt.Sprintf("--client-name=%s", "client"), - fmt.Sprintf("--client-file=%s", "client"), - fmt.Sprintf("--key-file=%s", "server"), - }) - clientErr := client.Execute() - if clientErr != nil { - logrus.Fatal(clientErr) - } + //ziti pki create client --pki-root="${ZITI_HOME}/pki" --ca-name "intermediate-ca" --client-name "client" --client-file "client" --key-file "server" + client := pki.NewCmdPKICreateClient(o.out, o.errOut) + client.SetArgs([]string{ + fmt.Sprintf("--pki-root=%s", where), + fmt.Sprintf("--ca-name=%s", "intermediate-ca"), + fmt.Sprintf("--client-name=%s", "client"), + fmt.Sprintf("--client-file=%s", "client"), + fmt.Sprintf("--key-file=%s", "server"), + }) + clientErr := client.Execute() + if clientErr != nil { + logrus.Fatal(clientErr) } }