16552: Start systemd service after successful init.
authorTom Clegg <tom@curii.com>
Thu, 30 Jun 2022 15:22:53 +0000 (11:22 -0400)
committerTom Clegg <tom@curii.com>
Thu, 30 Jun 2022 15:22:53 +0000 (11:22 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

cmd/arvados-package/install.go
lib/install/init.go

index 72688dc0a9c63687d2e55f951bddc3c51ae8aa44..9273ac9c73e4850f18d580899dfeae72b2719bd9 100644 (file)
@@ -124,7 +124,7 @@ eatmydata apt-get install --reinstall -y --no-install-recommends arvados-server-
 SUDO_FORCE_REMOVE=yes apt-get autoremove -y
 
 /etc/init.d/postgresql start
 SUDO_FORCE_REMOVE=yes apt-get autoremove -y
 
 /etc/init.d/postgresql start
-arvados-server init -cluster-id x1234 -domain=$domain -login=test $initargs
+arvados-server init -cluster-id x1234 -domain=$domain -login=test -start=false $initargs
 exec arvados-server boot -listen-host=0.0.0.0 $bootargs
 `)
        cmd.Stdout = stdout
 exec arvados-server boot -listen-host=0.0.0.0 $bootargs
 `)
        cmd.Stdout = stdout
index 6954a60d87389c2e82499ae4f30c92c3dceffe70..2257fc57c41715a70e93bbc9b94fc7c00eb50cda 100644 (file)
@@ -35,6 +35,7 @@ type initCommand struct {
        PostgreSQLPassword string
        Login              string
        TLS                string
        PostgreSQLPassword string
        Login              string
        TLS                string
+       Start              bool
 }
 
 func (initcmd *initCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
 }
 
 func (initcmd *initCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
@@ -63,6 +64,7 @@ func (initcmd *initCommand) RunCommand(prog string, args []string, stdin io.Read
        flags.StringVar(&initcmd.Domain, "domain", hostname, "cluster public DNS `name`, like x1234.arvadosapi.com")
        flags.StringVar(&initcmd.Login, "login", "", "login `backend`: test, pam, or ''")
        flags.StringVar(&initcmd.TLS, "tls", "none", "tls certificate `source`: acme, auto, insecure, or none")
        flags.StringVar(&initcmd.Domain, "domain", hostname, "cluster public DNS `name`, like x1234.arvadosapi.com")
        flags.StringVar(&initcmd.Login, "login", "", "login `backend`: test, pam, or ''")
        flags.StringVar(&initcmd.TLS, "tls", "none", "tls certificate `source`: acme, auto, insecure, or none")
+       flags.BoolVar(&initcmd.Start, "start", true, "start systemd service after creating config")
        if ok, code := cmd.ParseFlags(flags, prog, args, "", stderr); !ok {
                return code
        } else if *versionFlag {
        if ok, code := cmd.ParseFlags(flags, prog, args, "", stderr); !ok {
                return code
        } else if *versionFlag {
@@ -254,6 +256,19 @@ func (initcmd *initCommand) RunCommand(prog string, args []string, stdin io.Read
        }
        fmt.Fprintln(stderr, "initialized database")
 
        }
        fmt.Fprintln(stderr, "initialized database")
 
+       if initcmd.Start {
+               fmt.Fprintln(stderr, "starting systemd service")
+               cmd := exec.CommandContext(ctx, "systemctl", "start", "--no-block", "arvados")
+               cmd.Dir = "/"
+               cmd.Stdout = stderr
+               cmd.Stderr = stderr
+               err = cmd.Run()
+               if err != nil {
+                       err = fmt.Errorf("%v: %w", cmd.Args, err)
+                       return 1
+               }
+       }
+
        return 0
 }
 
        return 0
 }