From: Tom Clegg Date: Mon, 9 May 2022 13:49:36 +0000 (-0400) Subject: 18794: Merge branch 'main' X-Git-Tag: 2.5.0~184^2~1 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/0dab89df8040f203a33bc1922df0ff893791def7?hp=00542ded608212e8245429001f1a0a0a736f2e71 18794: Merge branch 'main' Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh index adcbab8a09..26705c0664 100755 --- a/build/run-build-packages.sh +++ b/build/run-build-packages.sh @@ -256,7 +256,7 @@ package_go_binary services/crunchstat crunchstat "$FORMAT" "$ARCH" \ "Gather cpu/memory/network statistics of running Crunch jobs" package_go_binary services/health arvados-health "$FORMAT" "$ARCH" \ "Check health of all Arvados cluster services" -package_go_binary services/keep-balance keep-balance "$FORMAT" "$ARCH" \ +package_go_binary cmd/arvados-server keep-balance "$FORMAT" "$ARCH" \ "Rebalance and garbage-collect data blocks stored in Arvados Keep" package_go_binary cmd/arvados-server keepproxy "$FORMAT" "$ARCH" \ "Make a Keep cluster accessible to clients that are not on the LAN" diff --git a/build/run-tests.sh b/build/run-tests.sh index d517e7e2c4..0f996f77e9 100755 --- a/build/run-tests.sh +++ b/build/run-tests.sh @@ -158,6 +158,8 @@ only_install= temp= temp_preserve= +ignore_sigint= + clear_temp() { if [[ -z "$temp" ]]; then # we did not even get as far as making a temp dir @@ -473,6 +475,10 @@ stop_services() { } interrupt() { + if [[ -n "$ignore_sigint" ]]; then + echo >&2 "ignored SIGINT" + return + fi failures+=("($(basename $0) interrupted)") exit_cleanly } @@ -1216,6 +1222,7 @@ else setnextcmd HISTFILE="$WORKSPACE/tmp/.history" history -r + ignore_sigint=1 while read -p 'What next? ' -e -i "$nextcmd" nextcmd; do history -s "$nextcmd" history -w diff --git a/cmd/arvados-server/cmd.go b/cmd/arvados-server/cmd.go index 342446a811..ae1e3fbeee 100644 --- a/cmd/arvados-server/cmd.go +++ b/cmd/arvados-server/cmd.go @@ -23,6 +23,7 @@ import ( "git.arvados.org/arvados.git/lib/recovercollection" "git.arvados.org/arvados.git/sdk/go/health" "git.arvados.org/arvados.git/services/githttpd" + keepbalance "git.arvados.org/arvados.git/services/keep-balance" keepweb "git.arvados.org/arvados.git/services/keep-web" "git.arvados.org/arvados.git/services/keepproxy" "git.arvados.org/arvados.git/services/keepstore" @@ -48,6 +49,7 @@ var ( "git-httpd": githttpd.Command, "install": install.Command, "init": install.InitCommand, + "keep-balance": keepbalance.Command, "keep-web": keepweb.Command, "keepproxy": keepproxy.Command, "keepstore": keepstore.Command, diff --git a/services/keep-balance/keep-balance.service b/cmd/arvados-server/keep-balance.service similarity index 87% rename from services/keep-balance/keep-balance.service rename to cmd/arvados-server/keep-balance.service index 859d707241..1c5808288b 100644 --- a/services/keep-balance/keep-balance.service +++ b/cmd/arvados-server/keep-balance.service @@ -6,12 +6,14 @@ Description=Arvados Keep Balance Documentation=https://doc.arvados.org/ After=network.target +AssertPathExists=/etc/arvados/config.yml # systemd>=230 (debian:9) obeys StartLimitIntervalSec in the [Unit] section StartLimitIntervalSec=0 [Service] -Type=simple +Type=notify +EnvironmentFile=-/etc/arvados/environment ExecStart=/usr/bin/keep-balance -commit-pulls -commit-trash # Set a reasonable default for the open file limit LimitNOFILE=65536 diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index 143529487b..a5d61b4a1c 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -388,7 +388,7 @@ func (super *Supervisor) runCluster() error { if super.ClusterType != "test" { tasks = append(tasks, runServiceCommand{name: "dispatch-cloud", svc: super.cluster.Services.DispatchCloud}, - runGoProgram{src: "services/keep-balance", svc: super.cluster.Services.Keepbalance}, + runServiceCommand{name: "keep-balance", svc: super.cluster.Services.Keepbalance}, ) } super.tasksReady = map[string]chan bool{} diff --git a/sdk/python/tests/run_test_server.py b/sdk/python/tests/run_test_server.py index 76893ac842..2c01b35aea 100644 --- a/sdk/python/tests/run_test_server.py +++ b/sdk/python/tests/run_test_server.py @@ -974,6 +974,9 @@ if __name__ == "__main__": format(args.action, actions), file=sys.stderr) sys.exit(1) + # Create a new process group so our child processes don't exit on + # ^C in run-tests.sh interactive mode. + os.setpgid(0, 0) if args.action == 'start': stop(force=('ARVADOS_TEST_API_HOST' not in os.environ)) run(leave_running_atexit=True) diff --git a/services/api/app/views/static/intro.html.erb b/services/api/app/views/static/intro.html.erb index 8bab0b2ac6..3e0b40794e 100644 --- a/services/api/app/views/static/intro.html.erb +++ b/services/api/app/views/static/intro.html.erb @@ -8,7 +8,7 @@ $(function(){ }); <% end %>
- +

Welcome

ARVADOS

diff --git a/services/api/app/views/static/login_failure.html.erb b/services/api/app/views/static/login_failure.html.erb index 6b81a33e87..d3f7111b5b 100644 --- a/services/api/app/views/static/login_failure.html.erb +++ b/services/api/app/views/static/login_failure.html.erb @@ -10,7 +10,7 @@ $(function(){
- +

Error

diff --git a/services/keep-balance/balance.go b/services/keep-balance/balance.go index eb6f580f43..1dedb409a4 100644 --- a/services/keep-balance/balance.go +++ b/services/keep-balance/balance.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "bytes" diff --git a/services/keep-balance/balance_run_test.go b/services/keep-balance/balance_run_test.go index 0d1b6b5912..2db7bea173 100644 --- a/services/keep-balance/balance_run_test.go +++ b/services/keep-balance/balance_run_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "bytes" diff --git a/services/keep-balance/balance_test.go b/services/keep-balance/balance_test.go index df04145b9d..6626609b57 100644 --- a/services/keep-balance/balance_test.go +++ b/services/keep-balance/balance_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "crypto/md5" diff --git a/services/keep-balance/block_state.go b/services/keep-balance/block_state.go index e30b4ff794..07c9952f90 100644 --- a/services/keep-balance/block_state.go +++ b/services/keep-balance/block_state.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "sync" diff --git a/services/keep-balance/block_state_test.go b/services/keep-balance/block_state_test.go index aaf2c18e29..8a58be288f 100644 --- a/services/keep-balance/block_state_test.go +++ b/services/keep-balance/block_state_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "time" diff --git a/services/keep-balance/change_set.go b/services/keep-balance/change_set.go index 85d03d409b..8e0ba028ac 100644 --- a/services/keep-balance/change_set.go +++ b/services/keep-balance/change_set.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "encoding/json" diff --git a/services/keep-balance/change_set_test.go b/services/keep-balance/change_set_test.go index baf7ab6dc4..5474d29fb5 100644 --- a/services/keep-balance/change_set_test.go +++ b/services/keep-balance/change_set_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "encoding/json" diff --git a/services/keep-balance/collection.go b/services/keep-balance/collection.go index 1e1e51abe7..ccb01bdd10 100644 --- a/services/keep-balance/collection.go +++ b/services/keep-balance/collection.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "context" diff --git a/services/keep-balance/collection_test.go b/services/keep-balance/collection_test.go index f749bad6ad..ca67d1617d 100644 --- a/services/keep-balance/collection_test.go +++ b/services/keep-balance/collection_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "context" diff --git a/services/keep-balance/integration_test.go b/services/keep-balance/integration_test.go index a6cc328104..3cfb5cdeda 100644 --- a/services/keep-balance/integration_test.go +++ b/services/keep-balance/integration_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "bytes" diff --git a/services/keep-balance/keep_service.go b/services/keep-balance/keep_service.go index 17f8418f62..f50fbfd946 100644 --- a/services/keep-balance/keep_service.go +++ b/services/keep-balance/keep_service.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "context" diff --git a/services/keep-balance/main.go b/services/keep-balance/main.go index 8a95d389c8..f0b0df5bd3 100644 --- a/services/keep-balance/main.go +++ b/services/keep-balance/main.go @@ -2,16 +2,15 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( + "bytes" "context" "flag" "fmt" "io" - "net/http" _ "net/http/pprof" - "os" "git.arvados.org/arvados.git/lib/cmd" "git.arvados.org/arvados.git/lib/config" @@ -22,16 +21,13 @@ import ( "github.com/jmoiron/sqlx" _ "github.com/lib/pq" "github.com/prometheus/client_golang/prometheus" - "github.com/sirupsen/logrus" ) -func main() { - os.Exit(runCommand(os.Args[0], os.Args[1:], os.Stdin, os.Stdout, os.Stderr)) -} +type command struct{} -func runCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { - logger := ctxlog.FromContext(context.Background()) +var Command = command{} +func (command) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { var options RunOptions flags := flag.NewFlagSet(prog, flag.ContinueOnError) flags.BoolVar(&options.Once, "once", false, @@ -42,34 +38,21 @@ func runCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.W "send trash requests (delete unreferenced old blocks, and excess replicas of overreplicated blocks)") flags.BoolVar(&options.CommitConfirmedFields, "commit-confirmed-fields", true, "update collection fields (replicas_confirmed, storage_classes_confirmed, etc.)") - dumpFlag := flags.Bool("dump", false, "dump details for each block to stdout") - pprofAddr := flags.String("pprof", "", "serve Go profile data at `[addr]:port`") - // "show version" is implemented by service.Command, so we - // don't need the var here -- we just need the -version flag + // These options are implemented by service.Command, so we + // don't need the vars here -- we just need the flags // to pass flags.Parse(). + flags.Bool("dump", false, "dump details for each block to stdout") + flags.String("pprof", "", "serve Go profile data at `[addr]:port`") flags.Bool("version", false, "Write version information to stdout and exit 0") - if *pprofAddr != "" { - go func() { - logrus.Println(http.ListenAndServe(*pprofAddr, nil)) - }() - } - - loader := config.NewLoader(os.Stdin, logger) + logger := ctxlog.New(stderr, "json", "info") + loader := config.NewLoader(&bytes.Buffer{}, logger) loader.SetupFlags(flags) - munged := loader.MungeLegacyConfigArgs(logger, args, "-legacy-keepbalance-config") if ok, code := cmd.ParseFlags(flags, prog, munged, "", stderr); !ok { return code } - if *dumpFlag { - dumper := logrus.New() - dumper.Out = os.Stdout - dumper.Formatter = &logrus.TextFormatter{} - options.Dumper = dumper - } - // Drop our custom args that would be rejected by the generic // service.Command args = nil diff --git a/services/keep-balance/main_test.go b/services/keep-balance/main_test.go index 820f352166..26002eca98 100644 --- a/services/keep-balance/main_test.go +++ b/services/keep-balance/main_test.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "bytes" @@ -25,7 +25,7 @@ type mainSuite struct{} func (s *mainSuite) TestVersionFlag(c *check.C) { var stdout, stderr bytes.Buffer - runCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr) + Command.RunCommand("keep-balance", []string{"-version"}, nil, &stdout, &stderr) c.Check(stderr.String(), check.Equals, "") c.Log(stdout.String()) c.Check(stdout.String(), check.Matches, `keep-balance.*\(go1.*\)\n`) @@ -51,7 +51,7 @@ func (s *mainSuite) TestHTTPServer(c *check.C) { c.Assert(err, check.IsNil) var stdout bytes.Buffer - go runCommand("keep-balance", []string{"-config", "-"}, bytes.NewBuffer(config), &stdout, &stdout) + go Command.RunCommand("keep-balance", []string{"-config", "-"}, bytes.NewBuffer(config), &stdout, &stdout) done := make(chan struct{}) go func() { defer close(done) diff --git a/services/keep-balance/metrics.go b/services/keep-balance/metrics.go index ce1b1811cc..4683b67b98 100644 --- a/services/keep-balance/metrics.go +++ b/services/keep-balance/metrics.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "fmt" diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go index 5299b96c1c..e485f5b206 100644 --- a/services/keep-balance/server.go +++ b/services/keep-balance/server.go @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( "net/http" diff --git a/tools/salt-install/config_examples/multi_host/aws/pillars/nginx_passenger.sls b/tools/salt-install/config_examples/multi_host/aws/pillars/nginx_passenger.sls index fbd42bd7a3..2b6b96c3a4 100644 --- a/tools/salt-install/config_examples/multi_host/aws/pillars/nginx_passenger.sls +++ b/tools/salt-install/config_examples/multi_host/aws/pillars/nginx_passenger.sls @@ -25,6 +25,8 @@ nginx: ### SERVER server: config: + # Needed for RVM, harmless otherwise. Cf. https://dev.arvados.org/issues/19015 + env: GEM_HOME # As we now differentiate where passenger is required or not, we need to # load this module conditionally, so we add this conditional just to use # the same pillar file diff --git a/tools/salt-install/config_examples/multi_host/aws/states/passenger_rvm.sls b/tools/salt-install/config_examples/multi_host/aws/states/passenger_rvm.sls new file mode 100644 index 0000000000..cb4bc1a1f9 --- /dev/null +++ b/tools/salt-install/config_examples/multi_host/aws/states/passenger_rvm.sls @@ -0,0 +1,43 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +{%- if grains.os_family in ('RedHat',) %} + {%- set group = 'nginx' %} +{%- else %} + {%- set group = 'www-data' %} +{%- endif %} + +# Make sure that /var/www/.passenger exists with the proper ownership +# so that passenger can build passenger_native_support.so +extra_var_www_passenger: + file.directory: + - name: /var/www/.passenger + - user: {{ group }} + - group: {{ group }} + - mode: '0755' + - makedirs: True + +{%- if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') %} +# Work around passenger issue when RVM is in use, cf +# https://dev.arvados.org/issues/19015 +extra_nginx_set_gem_home: + file.managed: + - name: /etc/systemd/system/nginx.service.d/override.conf + - mode: '0644' + - user: root + - group: root + - makedirs: True + - replace: False + - contents: | + [Service] + ExecStart= + ExecStart=/bin/bash -a -c "GEM_HOME=`[ -x /usr/local/rvm/bin/rvm-exec ] && /usr/local/rvm/bin/rvm-exec default env |grep GEM_HOME=|cut -f2 -d= || true` && /usr/sbin/nginx -g 'daemon on; master_process on;'" + cmd.run: + - name: systemctl daemon-reload + - require: + - file: extra_nginx_set_gem_home + - file: extra_var_www_passenger + - onchanges: + - file: extra_nginx_set_gem_home +{%- endif -%} diff --git a/tools/salt-install/config_examples/single_host/multiple_hostnames/pillars/nginx_passenger.sls b/tools/salt-install/config_examples/single_host/multiple_hostnames/pillars/nginx_passenger.sls index dbf21c2651..e51ec21eb9 100644 --- a/tools/salt-install/config_examples/single_host/multiple_hostnames/pillars/nginx_passenger.sls +++ b/tools/salt-install/config_examples/single_host/multiple_hostnames/pillars/nginx_passenger.sls @@ -25,6 +25,8 @@ nginx: ### SERVER server: config: + # Needed for RVM, harmless otherwise. Cf. https://dev.arvados.org/issues/19015 + env: GEM_HOME # As we now differentiate where passenger is required or not, we need to # load this module conditionally, so we add this conditional just to use # the same pillar file diff --git a/tools/salt-install/config_examples/single_host/multiple_hostnames/states/passenger_rvm.sls b/tools/salt-install/config_examples/single_host/multiple_hostnames/states/passenger_rvm.sls new file mode 100644 index 0000000000..cb4bc1a1f9 --- /dev/null +++ b/tools/salt-install/config_examples/single_host/multiple_hostnames/states/passenger_rvm.sls @@ -0,0 +1,43 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +{%- if grains.os_family in ('RedHat',) %} + {%- set group = 'nginx' %} +{%- else %} + {%- set group = 'www-data' %} +{%- endif %} + +# Make sure that /var/www/.passenger exists with the proper ownership +# so that passenger can build passenger_native_support.so +extra_var_www_passenger: + file.directory: + - name: /var/www/.passenger + - user: {{ group }} + - group: {{ group }} + - mode: '0755' + - makedirs: True + +{%- if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') %} +# Work around passenger issue when RVM is in use, cf +# https://dev.arvados.org/issues/19015 +extra_nginx_set_gem_home: + file.managed: + - name: /etc/systemd/system/nginx.service.d/override.conf + - mode: '0644' + - user: root + - group: root + - makedirs: True + - replace: False + - contents: | + [Service] + ExecStart= + ExecStart=/bin/bash -a -c "GEM_HOME=`[ -x /usr/local/rvm/bin/rvm-exec ] && /usr/local/rvm/bin/rvm-exec default env |grep GEM_HOME=|cut -f2 -d= || true` && /usr/sbin/nginx -g 'daemon on; master_process on;'" + cmd.run: + - name: systemctl daemon-reload + - require: + - file: extra_nginx_set_gem_home + - file: extra_var_www_passenger + - onchanges: + - file: extra_nginx_set_gem_home +{%- endif -%} diff --git a/tools/salt-install/config_examples/single_host/single_hostname/pillars/nginx_passenger.sls b/tools/salt-install/config_examples/single_host/single_hostname/pillars/nginx_passenger.sls index c25720c60a..2b764eb2c2 100644 --- a/tools/salt-install/config_examples/single_host/single_hostname/pillars/nginx_passenger.sls +++ b/tools/salt-install/config_examples/single_host/single_hostname/pillars/nginx_passenger.sls @@ -25,6 +25,8 @@ nginx: ### SERVER server: config: + # Needed for RVM, harmless otherwise. Cf. https://dev.arvados.org/issues/19015 + env: GEM_HOME # As we now differentiate where passenger is required or not, we need to # load this module conditionally, so we add this conditional just to use # the same pillar file diff --git a/tools/salt-install/config_examples/single_host/single_hostname/states/passenger_rvm.sls b/tools/salt-install/config_examples/single_host/single_hostname/states/passenger_rvm.sls new file mode 100644 index 0000000000..cb4bc1a1f9 --- /dev/null +++ b/tools/salt-install/config_examples/single_host/single_hostname/states/passenger_rvm.sls @@ -0,0 +1,43 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +{%- if grains.os_family in ('RedHat',) %} + {%- set group = 'nginx' %} +{%- else %} + {%- set group = 'www-data' %} +{%- endif %} + +# Make sure that /var/www/.passenger exists with the proper ownership +# so that passenger can build passenger_native_support.so +extra_var_www_passenger: + file.directory: + - name: /var/www/.passenger + - user: {{ group }} + - group: {{ group }} + - mode: '0755' + - makedirs: True + +{%- if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') %} +# Work around passenger issue when RVM is in use, cf +# https://dev.arvados.org/issues/19015 +extra_nginx_set_gem_home: + file.managed: + - name: /etc/systemd/system/nginx.service.d/override.conf + - mode: '0644' + - user: root + - group: root + - makedirs: True + - replace: False + - contents: | + [Service] + ExecStart= + ExecStart=/bin/bash -a -c "GEM_HOME=`[ -x /usr/local/rvm/bin/rvm-exec ] && /usr/local/rvm/bin/rvm-exec default env |grep GEM_HOME=|cut -f2 -d= || true` && /usr/sbin/nginx -g 'daemon on; master_process on;'" + cmd.run: + - name: systemctl daemon-reload + - require: + - file: extra_nginx_set_gem_home + - file: extra_var_www_passenger + - onchanges: + - file: extra_nginx_set_gem_home +{%- endif -%} diff --git a/tools/salt-install/provision.sh b/tools/salt-install/provision.sh index 669d04d92f..be1506c620 100755 --- a/tools/salt-install/provision.sh +++ b/tools/salt-install/provision.sh @@ -274,7 +274,7 @@ if [ ! -z "${HOSTNAME_EXT}" ] ; then # Make sure that the value configured as IP_INT is a real IP on the system. # If we don't error out early here when there is a mismatch, the formula will # fail with hard to interpret nginx errors later on. - ip addr list |grep -q "${IP_INT}/" + ip addr list |grep "${IP_INT}/" >/dev/null if [[ $? -ne 0 ]]; then echo "Unable to find the IP_INT address '${IP_INT}' on the system, please correct the value in local.params. Exiting..." exit 1 @@ -302,7 +302,10 @@ else yum install -y curl git jq ;; "debian"|"ubuntu") - DEBIAN_FRONTEND=noninteractive apt update + # Wait 2 minutes for any apt locks to clear + # This option is supported from apt 1.9.1 and ignored in older apt versions. + # Cf. https://blog.sinjakli.co.uk/2021/10/25/waiting-for-apt-locks-without-the-hacky-bash-scripts/ + DEBIAN_FRONTEND=noninteractive apt -o DPkg::Lock::Timeout=120 update DEBIAN_FRONTEND=noninteractive apt install -y curl git jq ;; esac @@ -565,6 +568,7 @@ if [ -z "${ROLES}" ]; then echo " - arvados" >> ${S_DIR}/top.sls echo " - extra.shell_sudo_passwordless" >> ${S_DIR}/top.sls echo " - extra.shell_cron_add_login_sync" >> ${S_DIR}/top.sls + echo " - extra.passenger_rvm" >> ${S_DIR}/top.sls # Pillars echo " - docker" >> ${P_DIR}/top.sls @@ -657,6 +661,7 @@ else else echo " - nginx.passenger" >> ${S_DIR}/top.sls fi + echo " - extra.passenger_rvm" >> ${S_DIR}/top.sls ### If we don't install and run LE before arvados-api-server, it fails and breaks everything ### after it. So we add this here as we are, after all, sharing the host for api and controller if [ "${SSL_MODE}" = "lets-encrypt" ]; then