18700: Add 'arvados-package testinstall -live=vhost' option.
authorTom Clegg <tom@curii.com>
Fri, 11 Mar 2022 14:38:30 +0000 (09:38 -0500)
committerTom Clegg <tom@curii.com>
Sun, 13 Mar 2022 16:54:37 +0000 (12:54 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

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

index a64d4407491e97e95bae9cea05c25cdfab0a0f29..6e3de08e9f829fb2549033d2240f255e8a8f8721 100644 (file)
@@ -65,6 +65,7 @@ type opts struct {
        TargetOS       string
        Maintainer     string
        Vendor         string
+       Live           string
 }
 
 func parseFlags(prog string, args []string, stderr io.Writer) (_ opts, ok bool, exitCode int) {
@@ -82,6 +83,7 @@ func parseFlags(prog string, args []string, stderr io.Writer) (_ opts, ok bool,
        flags.StringVar(&opts.TargetOS, "target-os", opts.TargetOS, "target operating system vendor:version")
        flags.StringVar(&opts.Maintainer, "package-maintainer", opts.Maintainer, "maintainer to be listed in package metadata")
        flags.StringVar(&opts.Vendor, "package-vendor", opts.Vendor, "vendor to be listed in package metadata")
+       flags.StringVar(&opts.Live, "live", opts.Live, "run controller at https://`example.com`, use host's /var/lib/acme/live certificates, wait for ^C before shutting down")
        flags.BoolVar(&opts.RebuildImage, "rebuild-image", opts.RebuildImage, "rebuild docker image(s) instead of using existing")
        flags.Usage = func() {
                fmt.Fprint(flags.Output(), `Usage: arvados-package <subcommand> [options]
index b0a87ba3ba00dd519e0547a7f4db276d9958bdb1..0e05f96d64e7cd7420123ed5cbf8368df6bfc7be 100644 (file)
@@ -85,9 +85,21 @@ rm /etc/apt/sources.list.d/arvados-local.list
                versionsuffix = "=" + opts.PackageVersion
        }
        cmd := exec.CommandContext(ctx, "docker", "run", "--rm",
-               "--tmpfs", "/tmp:exec,mode=01777",
-               "-v", absPackageDir+":/pkg:ro",
-               "--env", "DEBIAN_FRONTEND=noninteractive",
+               "--tmpfs=/tmp:exec,mode=01777",
+               "--volume="+absPackageDir+":/pkg:ro",
+               "--env=DEBIAN_FRONTEND=noninteractive")
+       if opts.Live != "" {
+               cmd.Args = append(cmd.Args,
+                       "--env=domain="+opts.Live,
+                       "--env=bootargs=",
+                       "--publish=:4430-4450:4430-4450",
+                       "--volume=/var/lib/acme:/var/lib/acme:ro")
+       } else {
+               cmd.Args = append(cmd.Args,
+                       "--env=domain=localhost",
+                       "--env=bootargs=-shutdown")
+       }
+       cmd.Args = append(cmd.Args,
                depsImageName,
                "bash", "-c", `
 set -e -o pipefail
@@ -106,8 +118,8 @@ eatmydata apt-get install --reinstall -y --no-install-recommends arvados-server-
 SUDO_FORCE_REMOVE=yes apt-get autoremove -y
 
 /etc/init.d/postgresql start
-arvados-server init -cluster-id x1234
-exec arvados-server boot -listen-host 0.0.0.0 -shutdown
+arvados-server init -cluster-id x1234 -domain=$domain
+exec arvados-server boot -listen-host=0.0.0.0 $bootargs
 `)
        cmd.Stdout = stdout
        cmd.Stderr = stderr
index 1d063506b800b28d495cd93c5f1ffd58f70c261f..f79fae7820f47a1cfbc93d0ee90073fce716fe65 100644 (file)
@@ -103,49 +103,49 @@ func (initcmd *initCommand) RunCommand(prog string, args []string, stdin io.Read
       Controller:
         InternalURLs:
           "http://0.0.0.0:8003/": {}
-        ExternalURL: {{printf "%q" ( print "https://" .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4430/" ) }}
       RailsAPI:
         InternalURLs:
           "http://0.0.0.0:8004/": {}
       Websocket:
         InternalURLs:
           "http://0.0.0.0:8005/": {}
-        ExternalURL: {{printf "%q" ( print "wss://ws." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "wss://." .Domain ":4436/" ) }}
       Keepbalance:
         InternalURLs:
           "http://0.0.0.0:9005/": {}
       GitHTTP:
         InternalURLs:
           "http://0.0.0.0:9001/": {}
-        ExternalURL: {{printf "%q" ( print "https://git." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4437/" ) }}
       DispatchCloud:
         InternalURLs:
           "http://0.0.0.0:9006/": {}
       Keepproxy:
         InternalURLs:
           "http://0.0.0.0:25108/": {}
-        ExternalURL: {{printf "%q" ( print "https://keep." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4438/" ) }}
       WebDAV:
         InternalURLs:
           "http://0.0.0.0:9002/": {}
-        ExternalURL: {{printf "%q" ( print "https://*.collections." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4439/" ) }}
       WebDAVDownload:
         InternalURLs:
           "http://0.0.0.0:8004/": {}
-        ExternalURL: {{printf "%q" ( print "https://download." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4439/" ) }}
       Keepstore:
         InternalURLs:
           "http://0.0.0.0:25107/": {}
       Composer:
-        ExternalURL: {{printf "%q" ( print "https://workbench." .Domain "/composer" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4440/composer" ) }}
       Workbench1:
         InternalURLs:
           "http://0.0.0.0:8001/": {}
-        ExternalURL: {{printf "%q" ( print "https://workbench." .Domain "/" ) }}
-      #Workbench2:
-      #  InternalURLs:
-      #    "http://0.0.0.0:8002/": {}
-      #  ExternalURL: {{printf "%q" ( print "https://workbench2." .Domain "/" ) }}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4441/" ) }}
+      Workbench2:
+        InternalURLs:
+          "http://0.0.0.0:8002/": {}
+        ExternalURL: {{printf "%q" ( print "https://" .Domain ":4442/" ) }}
       Health:
         InternalURLs:
           "http://0.0.0.0:9007/": {}