Merge branch '15370-loopback-dispatchcloud'
authorTom Clegg <tom@curii.com>
Thu, 2 Jun 2022 18:39:18 +0000 (14:39 -0400)
committerTom Clegg <tom@curii.com>
Thu, 2 Jun 2022 18:39:18 +0000 (14:39 -0400)
closes #15370

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

22 files changed:
apps/workbench/app/controllers/actions_controller.rb
doc/admin/upgrading.html.textile.liquid
doc/install/crunch2-cloud/install-compute-node.html.textile.liquid
doc/install/install-shell-server.html.textile.liquid
doc/install/salt-multi-host.html.textile.liquid
doc/install/salt-single-host.html.textile.liquid
lib/config/load.go
lib/config/load_test.go
sdk/cwl/arvados_cwl/arvcontainer.py
sdk/cwl/arvados_cwl/executor.py
tools/compute-images/arvados-images-aws.json
tools/compute-images/build.sh
tools/compute-images/scripts/base.sh
tools/salt-install/config_examples/multi_host/aws/pillars/arvados_development.sls
tools/salt-install/config_examples/multi_host/aws/pillars/nginx_passenger.sls
tools/salt-install/config_examples/single_host/multiple_hostnames/pillars/nginx_passenger.sls
tools/salt-install/config_examples/single_host/single_hostname/pillars/arvados.sls
tools/salt-install/config_examples/single_host/single_hostname/pillars/nginx_passenger.sls
tools/salt-install/local.params.example.multiple_hosts
tools/salt-install/local.params.example.single_host_multiple_hostnames
tools/salt-install/local.params.example.single_host_single_hostname
tools/salt-install/provision.sh

index 3667d8acaa5975fdb9c2bec62e1572667f13e680..df489d2eebc997c9efc8f3c55236f46021657fd4 100644 (file)
@@ -87,6 +87,9 @@ class ActionsController < ApplicationController
             end
             if resource_class == Collection
               dst.manifest_text = Collection.select([:manifest_text]).where(uuid: src.uuid).with_count("none").first.manifest_text
+              # Fixes bug 19144: nullify some fields that are managed by keep-balance.
+              dst.storage_classes_confirmed = []
+              dst.storage_classes_confirmed_at = nil
             end
           when :move
             dst = src
index 3f6009a803f2e535e8e6cf23edc8d6f7e93f9b76..96e68239b64620d37ca0b76b11c882946e3232ff 100644 (file)
@@ -28,7 +28,11 @@ TODO: extract this information based on git commit messages and generate changel
 <div class="releasenotes">
 </notextile>
 
-h2(#main). development main (as of 2022-04-08)
+h2(#main). development main (as of 2022-06-02)
+
+"previous: Upgrading to 2.4.1":#v2_4_1
+
+h2(#v2_4_1). v2.4.1 (2022-06-02)
 
 "previous: Upgrading to 2.4.0":#v2_4_0
 
index e75be0881e8b03df617f4644f44693067fceb626..ba24c17ea1b78bc6db48d5ccbb1720844eefc92f 100644 (file)
@@ -82,52 +82,62 @@ Syntax:
 
 Options:
 
-  --json-file (required)
-      Path to the packer json file
-  --arvados-cluster-id (required)
-      The ID of the Arvados cluster, e.g. zzzzz
-  --aws-profile (default: false)
-      AWS profile to use (valid profile from ~/.aws/config
-  --aws-secrets-file (default: false, required if building for AWS)
-      AWS secrets file which will be sourced from this script
-  --aws-source-ami (default: false, required if building for AWS)
-      The AMI to use as base for building the images
-  --aws-region (default: us-east-1)
+  --json-file &lt;path&gt;
+      Path to the packer json file (required)
+  --arvados-cluster-id &lt;xxxxx&gt;
+      The ID of the Arvados cluster, e.g. zzzzz(required)
+  --aws-profile &lt;profile&gt;
+      AWS profile to use (valid profile from ~/.aws/config (optional)
+  --aws-secrets-file &lt;path&gt;
+      AWS secrets file which will be sourced from this script (optional)
+      When building for AWS, either an AWS profile or an AWS secrets file
+      must be provided.
+  --aws-source-ami &lt;ami-xxxxxxxxxxxxxxxxx&gt;
+      The AMI to use as base for building the images (required if building for AWS)
+  --aws-region &lt;region&gt; (default: us-east-1)
       The AWS region to use for building the images
-  --aws-vpc-id (optional)
-      VPC id for AWS, otherwise packer will pick the default one
-  --aws-subnet-id
-      Subnet id for AWS otherwise packer will pick the default one for the VPC
-  --aws-ebs-autoscale (default: false)
-      Install the AWS EBS autoscaler daemon.
-  --gcp-project-id (default: false, required if building for GCP)
-      GCP project id
-  --gcp-account-file (default: false, required if building for GCP)
-      GCP account file
-  --gcp-zone (default: us-central1-f)
+  --aws-vpc-id &lt;vpc-id&gt;
+      VPC id for AWS, if not specified packer will derive from the subnet id or pick the default one.
+  --aws-subnet-id &lt;subnet-xxxxxxxxxxxxxxxxx&gt;
+      Subnet id for AWS, if not specified packer will pick the default one for the VPC.
+  --aws-ebs-autoscale
+      Install the AWS EBS autoscaler daemon (default: do not install the AWS EBS autoscaler).
+  --aws-associate-public-ip &lt;true|false&gt;
+      Associate a public IP address with the node used for building the compute image.
+      Required when the machine running packer can not reach the node used for building
+      the compute image via its private IP. (default: true if building for AWS)
+      Note: if the subnet has "Auto-assign public IPv4 address" enabled, disabling this
+      flag will have no effect.
+  --aws-ena-support &lt;true|false&gt;
+      Enable enhanced networking (default: true if building for AWS)
+  --gcp-project-id &lt;project-id&gt;
+      GCP project id (required if building for GCP)
+  --gcp-account-file &lt;path&gt;
+      GCP account file (required if building for GCP)
+  --gcp-zone &lt;zone&gt; (default: us-central1-f)
       GCP zone
-  --azure-secrets-file (default: false, required if building for Azure)
-      Azure secrets file which will be sourced from this script
-  --azure-resource-group (default: false, required if building for Azure)
-      Azure resource group
-  --azure-location (default: false, required if building for Azure)
-      Azure location, e.g. centralus, eastus, westeurope
-  --azure-sku (default: unset, required if building for Azure, e.g. 16.04-LTS)
+  --azure-secrets-file &lt;patch&gt;
+      Azure secrets file which will be sourced from this script (required if building for Azure)
+  --azure-resource-group &lt;resouce-group&gt;
+      Azure resource group (required if building for Azure)
+  --azure-location &lt;location&gt;
+      Azure location, e.g. centralus, eastus, westeurope (required if building for Azure)
+  --azure-sku &lt;sku&gt; (required if building for Azure, e.g. 16.04-LTS)
       Azure SKU image to use
-  --ssh_user  (default: packer)
+  --ssh_user &lt;user&gt; (default: packer)
       The user packer will use to log into the image
-  --resolver (default: host's network provided)
-      The dns resolver for the machine
-  --reposuffix (default: unset)
+  --resolver &lt;resolver_IP&gt;
+      The dns resolver for the machine (default: host's network provided)
+  --reposuffix &lt;suffix&gt;
       Set this to "-dev" to track the unstable/dev Arvados repositories
-  --public-key-file (required)
-      Path to the public key file that a-d-c will use to log into the compute node
+  --public-key-file &lt;path&gt;
+      Path to the public key file that a-d-c will use to log into the compute node (required)
   --mksquashfs-mem (default: 256M)
       Only relevant when using Singularity. This is the amount of memory mksquashfs is allowed to use.
-  --nvidia-gpu-support (default: false)
-      Install all the necessary tooling for Nvidia GPU support
-  --debug (default: false)
-      Output debug information
+  --nvidia-gpu-support
+      Install all the necessary tooling for Nvidia GPU support (default: do not install Nvidia GPU support)
+  --debug
+      Output debug information (default: no debug output is printed)
 </code></pre></notextile>
 
 h2(#dns-resolution). DNS resolution
index 9b8ecee1b7f9ffe10db3566ea26b6b8e75a8dee3..bdf9f4b59a63188f4f94ecb17d363ce393833c59 100644 (file)
@@ -10,7 +10,7 @@ SPDX-License-Identifier: CC-BY-SA-3.0
 {% endcomment %}
 
 # "Introduction":#introduction
-# "Install Dependecies and SDKs":#dependencies
+# "Install Dependencies and SDKs":#dependencies
 # "Install git and curl":#install-packages
 # "Update Git Config":#config-git
 # "Create record for VM":#vm-record
@@ -31,7 +31,7 @@ A single-user shell node should be set up so that it only stores Arvados access
 
 In the multi-user shell node case, a malicious user with @root@ access could access other user's Arvados tokens.  Users should only be given @root@ access on a multi-user shell node if you would trust them them to be Arvados administrators.  Be aware that with access to the @docker@ daemon, it is trival to gain *root* access to any file on the system, so giving users @docker@ access should be considered equivalent to @root@ access.
 
-h2(#dependencies). Install Dependecies and SDKs
+h2(#dependencies). Install Dependencies and SDKs
 
 # "Install Ruby and Bundler":ruby.html
 # "Install the Python SDK":{{site.baseurl}}/sdk/python/sdk-python.html
index 1778338f53ec17022eef5c8af5167008c17c23ee..5d871c4277a40d42eafc1c7bd0cf5199624e810e 100644 (file)
@@ -123,8 +123,6 @@ When you finished customizing the configuration, you are ready to copy the files
 
 <notextile>
 <pre><code>scp -r provision.sh local* user@host:
-# if you use custom certificates (not Let's Encrypt), make sure to copy those too:
-# scp -r certs user@host:
 ssh user@host sudo ./provision.sh --roles comma,separated,list,of,roles,to,apply
 </code></pre>
 </notextile>
index 106fab9bd4369c145fd69da01de9ce4b3f2edf3f..4b13dcc11ec3ded3f2ca012ae0726eeb1abc10ab 100644 (file)
@@ -111,7 +111,6 @@ To supply your own certificate, change the configuration like this:
 
 <notextile>
 <pre><code>SSL_MODE="bring-your-own"
-CUSTOM_CERTS_DIR="${SCRIPT_DIR}/certs"
 </code></pre>
 </notextile>
 
@@ -135,8 +134,6 @@ When you finished customizing the configuration, you are ready to copy the files
 
 <notextile>
 <pre><code>scp -r provision.sh local* tests user@host:
-# if you have set SSL_MODE to "bring-your-own", make sure to also copy the certificate files:
-# scp -r certs user@host:
 ssh user@host sudo ./provision.sh
 </code></pre>
 </notextile>
index acc54cf92df10d3a16c2e8e811f6b46e1f4670ac..fbd01488a0be51c430c0c6efc9ef7862ebb88fe5 100644 (file)
@@ -367,7 +367,7 @@ func (ldr *Loader) checkClusterID(label, clusterID string, emptyStringOk bool) e
        if emptyStringOk && clusterID == "" {
                return nil
        } else if !acceptableClusterIDRe.MatchString(clusterID) {
-               return fmt.Errorf("%s: cluster ID should be 5 alphanumeric characters", label)
+               return fmt.Errorf("%s: cluster ID should be 5 lowercase alphanumeric characters", label)
        }
        return nil
 }
index fb9792632c5193576d0d9f52d65c09208196928e..a19400c191df1db7a36e9e1ad8d242a0cbb301cc 100644 (file)
@@ -407,7 +407,7 @@ Clusters:
                if v != nil {
                        c.Logf("%#v", v.Clusters)
                }
-               c.Check(err, check.ErrorMatches, `.*cluster ID should be 5 alphanumeric characters.*`)
+               c.Check(err, check.ErrorMatches, `.*cluster ID should be 5 lowercase alphanumeric characters.*`)
        }
 }
 
index f3e122e603f8cd9cf9b768158132f28d7190b685..5094ea3bf1e7cc6320f153228e37131bc715d04d 100644 (file)
@@ -37,6 +37,9 @@ from ._version import __version__
 logger = logging.getLogger('arvados.cwl-runner')
 metrics = logging.getLogger('arvados.cwl-runner.metrics')
 
+def cleanup_name_for_collection(name):
+    return name.replace("/", " ")
+
 class ArvadosContainer(JobBase):
     """Submit and manage a Crunch container request for executing a CWL CommandLineTool."""
 
@@ -320,7 +323,7 @@ class ArvadosContainer(JobBase):
         if runtimeContext.submit_runner_cluster:
             extra_submit_params["cluster_id"] = runtimeContext.submit_runner_cluster
 
-        container_request["output_name"] = "Output from step %s" % (self.name)
+        container_request["output_name"] = cleanup_name_for_collection("Output from step %s" % (self.name))
         container_request["output_ttl"] = self.output_ttl
         container_request["mounts"] = mounts
         container_request["secret_mounts"] = secret_mounts
index fe078e32278738d5ebb2f1200199dad0a8771731..778af58ac3f7a1b71c040d5ec4f3332ecba11964 100644 (file)
@@ -31,7 +31,7 @@ from arvados.keep import KeepClient
 from arvados.errors import ApiError
 
 import arvados_cwl.util
-from .arvcontainer import RunnerContainer
+from .arvcontainer import RunnerContainer, cleanup_name_for_collection
 from .runner import Runner, upload_docker, upload_job_order, upload_workflow_deps, make_builder
 from .arvtool import ArvadosCommandTool, validate_cluster_target, ArvadosExpressionTool
 from .arvworkflow import ArvadosWorkflow, upload_workflow
@@ -630,6 +630,8 @@ The 'jobs' API is no longer supported.
         if not self.output_name:
              self.output_name = "Output from workflow %s" % runtimeContext.name
 
+        self.output_name  = cleanup_name_for_collection(self.output_name)
+
         if self.work_api == "containers":
             if self.ignore_docker_for_reuse:
                 raise Exception("--ignore-docker-for-reuse not supported with containers API.")
index c030ea6aff97d88b43d5e8412dc990a43c548e25..9e07b461c5a7156962479eadb07418c073ee4234 100644 (file)
@@ -1,12 +1,13 @@
 {
   "variables": {
     "arvados_cluster": "",
-    "associate_public_ip_address": "true",
     "aws_access_key": "",
     "aws_profile": "",
     "aws_secret_key": "",
     "aws_source_ami": "ami-031283ff8a43b021c",
     "aws_ebs_autoscale": "",
+    "aws_associate_public_ip_address": "",
+    "aws_ena_support": "",
     "build_environment": "aws",
     "public_key_file": "",
     "mksquashfs_mem": "",
     "access_key": "{{user `aws_access_key`}}",
     "secret_key": "{{user `aws_secret_key`}}",
     "region": "{{user `aws_default_region`}}",
-    "ena_support": "true",
+    "ena_support": "{{user `aws_ena_support`}}",
     "source_ami": "{{user `aws_source_ami`}}",
     "instance_type": "m5.large",
     "vpc_id": "{{user `vpc_id`}}",
     "subnet_id": "{{user `subnet_id`}}",
-    "associate_public_ip_address": "{{user `associate_public_ip_address`}}",
+    "associate_public_ip_address": "{{user `aws_associate_public_ip_address`}}",
     "ssh_username": "{{user `ssh_user`}}",
     "ami_name": "arvados-{{user `arvados_cluster`}}-compute-{{isotime \"20060102150405\"}}",
     "launch_block_device_mappings": [{
index c589ffa055493c3be94c132a3c3914e6aeccb928..5b3db262c16c85dcb385ef55cae87a2c1f3eb425 100755 (executable)
@@ -17,52 +17,62 @@ Syntax:
 
 Options:
 
-  --json-file (required)
-      Path to the packer json file
-  --arvados-cluster-id (required)
-      The ID of the Arvados cluster, e.g. zzzzz
-  --aws-profile (default: false)
-      AWS profile to use (valid profile from ~/.aws/config
-  --aws-secrets-file (default: false, required if building for AWS)
-      AWS secrets file which will be sourced from this script
-  --aws-source-ami (default: false, required if building for AWS)
-      The AMI to use as base for building the images
-  --aws-region (default: us-east-1)
+  --json-file <path>
+      Path to the packer json file (required)
+  --arvados-cluster-id <xxxxx>
+      The ID of the Arvados cluster, e.g. zzzzz(required)
+  --aws-profile <profile>
+      AWS profile to use (valid profile from ~/.aws/config (optional)
+  --aws-secrets-file <path>
+      AWS secrets file which will be sourced from this script (optional)
+      When building for AWS, either an AWS profile or an AWS secrets file
+      must be provided.
+  --aws-source-ami <ami-xxxxxxxxxxxxxxxxx>
+      The AMI to use as base for building the images (required if building for AWS)
+  --aws-region <region> (default: us-east-1)
       The AWS region to use for building the images
-  --aws-vpc-id (optional)
-      VPC id for AWS, otherwise packer will pick the default one
-  --aws-subnet-id
-      Subnet id for AWS otherwise packer will pick the default one for the VPC
-  --aws-ebs-autoscale (default: false)
-      Install the AWS EBS autoscaler daemon.
-  --gcp-project-id (default: false, required if building for GCP)
-      GCP project id
-  --gcp-account-file (default: false, required if building for GCP)
-      GCP account file
-  --gcp-zone (default: us-central1-f)
+  --aws-vpc-id <vpc-id>
+      VPC id for AWS, if not specified packer will derive from the subnet id or pick the default one.
+  --aws-subnet-id <subnet-xxxxxxxxxxxxxxxxx>
+      Subnet id for AWS, if not specified packer will pick the default one for the VPC.
+  --aws-ebs-autoscale
+      Install the AWS EBS autoscaler daemon (default: do not install the AWS EBS autoscaler).
+  --aws-associate-public-ip <true|false>
+      Associate a public IP address with the node used for building the compute image.
+      Required when the machine running packer can not reach the node used for building
+      the compute image via its private IP. (default: true if building for AWS)
+      Note: if the subnet has "Auto-assign public IPv4 address" enabled, disabling this
+      flag will have no effect.
+  --aws-ena-support <true|false>
+      Enable enhanced networking (default: true if building for AWS)
+  --gcp-project-id <project-id>
+      GCP project id (required if building for GCP)
+  --gcp-account-file <path>
+      GCP account file (required if building for GCP)
+  --gcp-zone <zone> (default: us-central1-f)
       GCP zone
-  --azure-secrets-file (default: false, required if building for Azure)
-      Azure secrets file which will be sourced from this script
-  --azure-resource-group (default: false, required if building for Azure)
-      Azure resource group
-  --azure-location (default: false, required if building for Azure)
-      Azure location, e.g. centralus, eastus, westeurope
-  --azure-sku (default: unset, required if building for Azure, e.g. 16.04-LTS)
+  --azure-secrets-file <patch>
+      Azure secrets file which will be sourced from this script (required if building for Azure)
+  --azure-resource-group <resouce-group>
+      Azure resource group (required if building for Azure)
+  --azure-location <location>
+      Azure location, e.g. centralus, eastus, westeurope (required if building for Azure)
+  --azure-sku <sku> (required if building for Azure, e.g. 16.04-LTS)
       Azure SKU image to use
-  --ssh_user  (default: packer)
+  --ssh_user <user> (default: packer)
       The user packer will use to log into the image
-  --resolver (default: host's network provided)
-      The dns resolver for the machine
-  --reposuffix (default: unset)
+  --resolver <resolver_IP>
+      The dns resolver for the machine (default: host's network provided)
+  --reposuffix <suffix>
       Set this to "-dev" to track the unstable/dev Arvados repositories
-  --public-key-file (required)
-      Path to the public key file that a-d-c will use to log into the compute node
+  --public-key-file <path>
+      Path to the public key file that a-d-c will use to log into the compute node (required)
   --mksquashfs-mem (default: 256M)
       Only relevant when using Singularity. This is the amount of memory mksquashfs is allowed to use.
-  --nvidia-gpu-support (default: false)
-      Install all the necessary tooling for Nvidia GPU support
-  --debug (default: false)
-      Output debug information
+  --nvidia-gpu-support
+      Install all the necessary tooling for Nvidia GPU support (default: do not install Nvidia GPU support)
+  --debug
+      Output debug information (default: no debug output is printed)
 
 For more information, see the Arvados documentation at https://doc.arvados.org/install/crunch2-cloud/install-compute-node.html
 
@@ -76,6 +86,8 @@ AWS_SOURCE_AMI=
 AWS_VPC_ID=
 AWS_SUBNET_ID=
 AWS_EBS_AUTOSCALE=
+AWS_ASSOCIATE_PUBLIC_IP=true
+AWS_ENA_SUPPORT=true
 GCP_PROJECT_ID=
 GCP_ACCOUNT_FILE=
 GCP_ZONE=
@@ -91,7 +103,7 @@ MKSQUASHFS_MEM=256M
 NVIDIA_GPU_SUPPORT=
 
 PARSEDOPTS=$(getopt --name "$0" --longoptions \
-    help,json-file:,arvados-cluster-id:,aws-source-ami:,aws-profile:,aws-secrets-file:,aws-region:,aws-vpc-id:,aws-subnet-id:,aws-ebs-autoscale,gcp-project-id:,gcp-account-file:,gcp-zone:,azure-secrets-file:,azure-resource-group:,azure-location:,azure-sku:,azure-cloud-environment:,ssh_user:,resolver:,reposuffix:,public-key-file:,mksquashfs-mem:,nvidia-gpu-support,debug \
+    help,json-file:,arvados-cluster-id:,aws-source-ami:,aws-profile:,aws-secrets-file:,aws-region:,aws-vpc-id:,aws-subnet-id:,aws-ebs-autoscale,aws-associate-public-ip:,aws-ena-support:,gcp-project-id:,gcp-account-file:,gcp-zone:,azure-secrets-file:,azure-resource-group:,azure-location:,azure-sku:,azure-cloud-environment:,ssh_user:,resolver:,reposuffix:,public-key-file:,mksquashfs-mem:,nvidia-gpu-support,debug \
     -- "" "$@")
 if [ $? -ne 0 ]; then
     exit 1
@@ -132,6 +144,12 @@ while [ $# -gt 0 ]; do
         --aws-ebs-autoscale)
             AWS_EBS_AUTOSCALE=1
             ;;
+        --aws-associate-public-ip)
+            AWS_ASSOCIATE_PUBLIC_IP="$2"; shift
+            ;;
+        --aws-ena-support)
+            AWS_ENA_SUPPORT="$2"; shift
+            ;;
         --gcp-project-id)
             GCP_PROJECT_ID="$2"; shift
             ;;
@@ -226,25 +244,36 @@ if [[ ! -z "$AZURE_SECRETS_FILE" ]]; then
 fi
 
 
+AWS=0
 EXTRA2=""
 
 if [[ -n "$AWS_SOURCE_AMI" ]]; then
   EXTRA2+=" -var aws_source_ami=$AWS_SOURCE_AMI"
+  AWS=1
 fi
 if [[ -n "$AWS_PROFILE" ]]; then
   EXTRA2+=" -var aws_profile=$AWS_PROFILE"
+  AWS=1
 fi
 if [[ -n "$AWS_VPC_ID" ]]; then
-  EXTRA2+=" -var vpc_id=$AWS_VPC_ID -var associate_public_ip_address=true "
+  EXTRA2+=" -var vpc_id=$AWS_VPC_ID"
+  AWS=1
 fi
 if [[ -n "$AWS_SUBNET_ID" ]]; then
-  EXTRA2+=" -var subnet_id=$AWS_SUBNET_ID -var associate_public_ip_address=true "
+  EXTRA2+=" -var subnet_id=$AWS_SUBNET_ID"
+  AWS=1
 fi
 if [[ -n "$AWS_DEFAULT_REGION" ]]; then
   EXTRA2+=" -var aws_default_region=$AWS_DEFAULT_REGION"
+  AWS=1
 fi
 if [[ -n "$AWS_EBS_AUTOSCALE" ]]; then
   EXTRA2+=" -var aws_ebs_autoscale=$AWS_EBS_AUTOSCALE"
+  AWS=1
+fi
+if [[ $AWS -eq 1 ]]; then
+  EXTRA2+=" -var aws_associate_public_ip_address=$AWS_ASSOCIATE_PUBLIC_IP"
+  EXTRA2+=" -var aws_ena_support=$AWS_ENA_SUPPORT"
 fi
 if [[ -n "$GCP_PROJECT_ID" ]]; then
   EXTRA2+=" -var project_id=$GCP_PROJECT_ID"
index c9fd0945d2927157b46a0ba5bd4232f2a120b8e5..816036f3843a3bf2a905b653d6a563dcd023642e 100644 (file)
@@ -50,8 +50,8 @@ echo "deb http://apt.arvados.org/$LSB_RELEASE_CODENAME $LSB_RELEASE_CODENAME${RE
 
 # Add the arvados signing key
 cat /tmp/1078ECD7.asc | $SUDO apt-key add -
-# Add the debian keys
-wait_for_apt_locks && $SUDO DEBIAN_FRONTEND=noninteractive apt-get install --yes debian-keyring debian-archive-keyring
+# Add the debian keys (but don't abort if we can't find them, e.g. on Ubuntu where we don't need them)
+wait_for_apt_locks && $SUDO DEBIAN_FRONTEND=noninteractive apt-get install --yes debian-keyring debian-archive-keyring 2>/dev/null || true
 
 # Fix locale
 $SUDO /bin/sed -ri 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
@@ -216,6 +216,7 @@ if [ "$NVIDIA_GPU_SUPPORT" == "1" ]; then
 
   # Install CUDA
   $SUDO apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/$DIST/x86_64/7fa2af80.pub
+  $SUDO apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/$DIST/x86_64/3bf863cc.pub
   $SUDO apt-get -y install software-properties-common
   $SUDO add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/$DIST/x86_64/ /"
   # Ubuntu 18.04's add-apt-repository does not understand 'contrib'
index 21712d9721058a11846013fdcd34f641560a7b79..6163cd360c29f64ab0b58c289a3014d576207b75 100644 (file)
@@ -136,6 +136,9 @@ arvados:
         DriverParameters:
           Root: /tmp
 
+    Containers:
+      LocalKeepBlobBuffersPerVCPU: 0
+
     Users:
       NewUsersAreActive: true
       AutoAdminFirstUser: true
index 2b6b96c3a47cf84f764c9648ece1a5c80621df62..c14fbd1f59214263bca6634a20a3b11bf4ea08cf 100644 (file)
@@ -9,7 +9,7 @@
 {%- set passenger_mod = '/usr/lib64/nginx/modules/ngx_http_passenger_module.so'
                           if grains.osfinger in ('CentOS Linux-7',) else
                         '/usr/lib/nginx/modules/ngx_http_passenger_module.so' %}
-{%- set passenger_ruby = '/usr/local/rvm/rubies/ruby-2.7.2/bin/ruby'
+{%- set passenger_ruby = '/usr/local/rvm/wrappers/default/ruby'
                            if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') else
                          '/usr/bin/ruby' %}
 
index e51ec21eb919278215d37bc37f46755017a7ea36..dfddf3b62361ae66305f178bd3c0a84436a50082 100644 (file)
@@ -9,7 +9,7 @@
 {%- set passenger_mod = '/usr/lib64/nginx/modules/ngx_http_passenger_module.so'
                           if grains.osfinger in ('CentOS Linux-7',) else
                         '/usr/lib/nginx/modules/ngx_http_passenger_module.so' %}
-{%- set passenger_ruby = '/usr/local/rvm/rubies/ruby-2.7.2/bin/ruby'
+{%- set passenger_ruby = '/usr/local/rvm/wrappers/default/ruby'
                            if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') else
                          '/usr/bin/ruby' %}
 
index 21bb2c45a83e9d006117dd564ba1e9b916a6a080..ec51fe59080a520a24bc21e7fa8247f1cc1ebfd5 100644 (file)
@@ -125,6 +125,9 @@ arvados:
         DriverParameters:
           Root: /tmp
 
+    Containers:
+      LocalKeepBlobBuffersPerVCPU: 0
+
     Users:
       NewUsersAreActive: true
       AutoAdminFirstUser: true
index 2b764eb2c25b69bc1c03097b7987077da425678d..21c1510de8aa36a153d76d2c7bd8ee8ae44d4cd2 100644 (file)
@@ -9,7 +9,7 @@
 {%- set passenger_mod = '/usr/lib64/nginx/modules/ngx_http_passenger_module.so'
                           if grains.osfinger in ('CentOS Linux-7',) else
                         '/usr/lib/nginx/modules/ngx_http_passenger_module.so' %}
-{%- set passenger_ruby = '/usr/local/rvm/rubies/ruby-2.7.2/bin/ruby'
+{%- set passenger_ruby = '/usr/local/rvm/wrappers/default/ruby'
                            if grains.osfinger in ('CentOS Linux-7', 'Ubuntu-18.04', 'Debian-10') else
                          '/usr/bin/ruby' %}
 
index 32d1f8bb961d7205a3b03512051bad8d2a431152..31a69e9840cdfabbee21609b662816b7df60c362 100644 (file)
@@ -5,7 +5,7 @@
 
 # These are the basic parameters to configure the installation
 
-# The FIVE ALPHANUMERIC CHARACTERS name you want to give your cluster
+# The Arvados cluster ID, needs to be 5 lowercase alphanumeric characters.
 CLUSTER="cluster_fixme_or_this_wont_work"
 
 # The domainname you want tou give to your cluster's hosts
@@ -82,7 +82,7 @@ LE_AWS_SECRET_ACCESS_KEY="thisistherandomstringthatisyoursecretkey"
 # Please set it to the FULL PATH to the certs dir if you're going to use a different dir
 # Default is "${SCRIPT_DIR}/certs", where the variable "SCRIPT_DIR" has the path to the
 # directory where the  "provision.sh" script was copied in the destination host.
-# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/certs"
+# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/local_config_dir/certs"
 # The script expects cert/key files with these basenames (matching the role except for
 # keepweb, which is split in both download/collections):
 #  "controller"
index d6bfb102e938eaa4150fd0d2af8e2f420d1597b1..2ce1556511bc7d57ddc5a58f53b5840de7353abf 100644 (file)
@@ -5,7 +5,7 @@
 
 # These are the basic parameters to configure the installation
 
-# The FIVE ALPHANUMERIC CHARACTERS name you want to give your cluster
+# The Arvados cluster ID, needs to be 5 lowercase alphanumeric characters.
 CLUSTER="cluster_fixme_or_this_wont_work"
 
 # The domainname you want tou give to your cluster's hosts
@@ -45,7 +45,7 @@ SSL_MODE="self-signed"
 
 # CUSTOM_CERTS_DIR is only used when SSL_MODE is set to "bring-your-own".
 # See https://doc.arvados.org/intall/salt-single-host.html#bring-your-own for more information.
-# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/certs"
+# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/local_config_dir/certs"
 
 # The directory to check for the config files (pillars, states) you want to use.
 # There are a few examples under 'config_examples'.
index b6c7e5f7a5d9c4fdd310e32e6dabfe3df5eb9379..7add9868d9223f90c53d3ef209aa57d875a7328c 100644 (file)
@@ -5,7 +5,7 @@
 
 # These are the basic parameters to configure the installation
 
-# The Arvados cluster ID, needs to be five alphanumeric characters.
+# The Arvados cluster ID, needs to be 5 lowercase alphanumeric characters.
 CLUSTER="cluster_fixme_or_this_wont_work"
 
 # The domainname for your cluster's hosts
@@ -53,7 +53,7 @@ SSL_MODE="self-signed"
 
 # CUSTOM_CERTS_DIR is only used when SSL_MODE is set to "bring-your-own".
 # See https://doc.arvados.org/intall/salt-single-host.html#bring-your-own for more information.
-# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/certs"
+# CUSTOM_CERTS_DIR="${SCRIPT_DIR}/local_config_dir/certs"
 
 # The directory to check for the config files (pillars, states) you want to use.
 # There are a few examples under 'config_examples'.
index be1506c620e7aec8dbc5e58910c982aecd5b6f14..c8e260479953f66f844e6de9df7ce29df61714d1 100755 (executable)
@@ -200,7 +200,7 @@ WORKBENCH2_EXT_SSL_PORT=3001
 
 SSL_MODE="self-signed"
 USE_LETSENCRYPT_ROUTE53="no"
-CUSTOM_CERTS_DIR="${SCRIPT_DIR}/certs"
+CUSTOM_CERTS_DIR="${SCRIPT_DIR}/local_config_dir/certs"
 
 ## These are ARVADOS-related parameters
 # For a stable release, change RELEASE "production" and VERSION to the
@@ -262,7 +262,7 @@ if grep -q 'fixme_or_this_wont_work' ${CONFIG_FILE} ; then
 fi
 
 if ! grep -qE '^[[:alnum:]]{5}$' <<<${CLUSTER} ; then
-  echo >&2 "ERROR: <CLUSTER> must be exactly 5 alphanumeric characters long"
+  echo >&2 "ERROR: <CLUSTER> must be exactly 5 lowercase alphanumeric characters long"
   echo >&2 "Fix the cluster name in the 'local.params' file and re-run the provision script"
   exit 1
 fi
@@ -593,11 +593,27 @@ if [ -z "${ROLES}" ]; then
     fi
     grep -q "letsencrypt" ${P_DIR}/top.sls || echo "    - letsencrypt" >> ${P_DIR}/top.sls
 
-    # As the pillar differ whether we use LE or custom certs, we need to do a final edition on them
-    for c in controller websocket workbench workbench2 webshell download collections keepproxy; do
-      sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${c}.${CLUSTER}.${DOMAIN}*/g;
-              s#__CERT_PEM__#/etc/letsencrypt/live/${c}.${CLUSTER}.${DOMAIN}/fullchain.pem#g;
-              s#__CERT_KEY__#/etc/letsencrypt/live/${c}.${CLUSTER}.${DOMAIN}/privkey.pem#g" \
+    hosts=("controller" "websocket" "workbench" "workbench2" "webshell" "keepproxy")
+    if [ ${USE_SINGLE_HOSTNAME} = "no" ]; then
+      hosts+=("download" "collections")
+    else
+      hosts+=("keepweb")
+    fi
+
+    for c in "${hosts[@]}"; do
+      # Are we in a single-host-single-hostname env?
+      if [ "${USE_SINGLE_HOSTNAME}" = "yes" ]; then
+        # Are we in a single-host-single-hostname env?
+        CERT_NAME=${HOSTNAME_EXT}
+      else
+        # We are in a multiple-hostnames env
+        CERT_NAME=${c}.${CLUSTER}.${DOMAIN}
+      fi
+
+      # As the pillar differs whether we use LE or custom certs, we need to do a final edition on them
+      sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${CERT_NAME}*/g;
+              s#__CERT_PEM__#/etc/letsencrypt/live/${CERT_NAME}/fullchain.pem#g;
+              s#__CERT_KEY__#/etc/letsencrypt/live/${CERT_NAME}/privkey.pem#g" \
       ${P_DIR}/nginx_${c}_configuration.sls
     done
   else