X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8858d25844dc2591e7465466de540c8a62ee4945..0152714fbaae387661b858ca1b761b9409ccf803:/tools/compute-images/build.sh diff --git a/tools/compute-images/build.sh b/tools/compute-images/build.sh index a2dd2ed288..c589ffa055 100755 --- a/tools/compute-images/build.sh +++ b/tools/compute-images/build.sh @@ -33,6 +33,8 @@ Options: 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) @@ -55,8 +57,14 @@ Options: 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 - --debug - Output debug information (default: false) + --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 + +For more information, see the Arvados documentation at https://doc.arvados.org/install/crunch2-cloud/install-compute-node.html EOF @@ -67,6 +75,7 @@ AWS_SECRETS_FILE= AWS_SOURCE_AMI= AWS_VPC_ID= AWS_SUBNET_ID= +AWS_EBS_AUTOSCALE= GCP_PROJECT_ID= GCP_ACCOUNT_FILE= GCP_ZONE= @@ -78,9 +87,11 @@ DEBUG= SSH_USER= AWS_DEFAULT_REGION=us-east-1 PUBLIC_KEY_FILE= +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:,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:,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,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 @@ -118,6 +129,9 @@ while [ $# -gt 0 ]; do --aws-subnet-id) AWS_SUBNET_ID="$2"; shift ;; + --aws-ebs-autoscale) + AWS_EBS_AUTOSCALE=1 + ;; --gcp-project-id) GCP_PROJECT_ID="$2"; shift ;; @@ -154,6 +168,12 @@ while [ $# -gt 0 ]; do --public-key-file) PUBLIC_KEY_FILE="$2"; shift ;; + --mksquashfs-mem) + MKSQUASHFS_MEM="$2"; shift + ;; + --nvidia-gpu-support) + NVIDIA_GPU_SUPPORT=1 + ;; --debug) # If you want to debug a build issue, add the -debug flag to the build # command in question. @@ -173,7 +193,7 @@ while [ $# -gt 0 ]; do done -if [[ "$JSON_FILE" == "" ]] || [[ ! -f "$JSON_FILE" ]]; then +if [[ -z "$JSON_FILE" ]] || [[ ! -f "$JSON_FILE" ]]; then echo >&2 "$helpmessage" echo >&2 echo >&2 "ERROR: packer json file not found" @@ -189,7 +209,7 @@ if [[ -z "$ARVADOS_CLUSTER_ID" ]]; then exit 1 fi -if [[ "$PUBLIC_KEY_FILE" == "" ]] || [[ ! -f "$PUBLIC_KEY_FILE" ]]; then +if [[ -z "$PUBLIC_KEY_FILE" ]] || [[ ! -f "$PUBLIC_KEY_FILE" ]]; then echo >&2 "$helpmessage" echo >&2 echo >&2 "ERROR: public key file file not found" @@ -208,54 +228,66 @@ fi EXTRA2="" -if [[ "$AWS_SOURCE_AMI" != "" ]]; then +if [[ -n "$AWS_SOURCE_AMI" ]]; then EXTRA2+=" -var aws_source_ami=$AWS_SOURCE_AMI" fi -if [[ "$AWS_PROFILE" != "" ]]; then +if [[ -n "$AWS_PROFILE" ]]; then EXTRA2+=" -var aws_profile=$AWS_PROFILE" fi -if [[ "$AWS_VPC_ID" != "" ]]; then +if [[ -n "$AWS_VPC_ID" ]]; then EXTRA2+=" -var vpc_id=$AWS_VPC_ID -var associate_public_ip_address=true " fi -if [[ "$AWS_SUBNET_ID" != "" ]]; then +if [[ -n "$AWS_SUBNET_ID" ]]; then EXTRA2+=" -var subnet_id=$AWS_SUBNET_ID -var associate_public_ip_address=true " fi -if [[ "$AWS_DEFAULT_REGION" != "" ]]; then +if [[ -n "$AWS_DEFAULT_REGION" ]]; then EXTRA2+=" -var aws_default_region=$AWS_DEFAULT_REGION" fi -if [[ "$GCP_PROJECT_ID" != "" ]]; then +if [[ -n "$AWS_EBS_AUTOSCALE" ]]; then + EXTRA2+=" -var aws_ebs_autoscale=$AWS_EBS_AUTOSCALE" +fi +if [[ -n "$GCP_PROJECT_ID" ]]; then EXTRA2+=" -var project_id=$GCP_PROJECT_ID" fi -if [[ "$GCP_ACCOUNT_FILE" != "" ]]; then +if [[ -n "$GCP_ACCOUNT_FILE" ]]; then EXTRA2+=" -var account_file=$GCP_ACCOUNT_FILE" fi -if [[ "$GCP_ZONE" != "" ]]; then +if [[ -n "$GCP_ZONE" ]]; then EXTRA2+=" -var zone=$GCP_ZONE" fi -if [[ "$AZURE_RESOURCE_GROUP" != "" ]]; then +if [[ -n "$AZURE_RESOURCE_GROUP" ]]; then EXTRA2+=" -var resource_group=$AZURE_RESOURCE_GROUP" fi -if [[ "$AZURE_LOCATION" != "" ]]; then +if [[ -n "$AZURE_LOCATION" ]]; then EXTRA2+=" -var location=$AZURE_LOCATION" fi -if [[ "$AZURE_SKU" != "" ]]; then +if [[ -n "$AZURE_SKU" ]]; then EXTRA2+=" -var image_sku=$AZURE_SKU" fi -if [[ "$AZURE_CLOUD_ENVIRONMENT" != "" ]]; then +if [[ -n "$AZURE_CLOUD_ENVIRONMENT" ]]; then EXTRA2+=" -var cloud_environment_name=$AZURE_CLOUD_ENVIRONMENT" fi -if [[ "$SSH_USER" != "" ]]; then +if [[ -n "$SSH_USER" ]]; then EXTRA2+=" -var ssh_user=$SSH_USER" fi -if [[ "$RESOLVER" != "" ]]; then +if [[ -n "$RESOLVER" ]]; then EXTRA2+=" -var resolver=$RESOLVER" fi -if [[ "$REPOSUFFIX" != "" ]]; then +if [[ -n "$REPOSUFFIX" ]]; then EXTRA2+=" -var reposuffix=$REPOSUFFIX" fi -if [[ "$PUBLIC_KEY_FILE" != "" ]]; then +if [[ -n "$PUBLIC_KEY_FILE" ]]; then EXTRA2+=" -var public_key_file=$PUBLIC_KEY_FILE" fi +if [[ -n "$MKSQUASHFS_MEM" ]]; then + EXTRA2+=" -var mksquashfs_mem=$MKSQUASHFS_MEM" +fi +if [[ -n "$NVIDIA_GPU_SUPPORT" ]]; then + EXTRA2+=" -var nvidia_gpu_support=$NVIDIA_GPU_SUPPORT" +fi + +GOVERSION=$(grep 'const goversion =' ../../lib/install/deps.go |awk -F'"' '{print $2}') +EXTRA2+=" -var goversion=$GOVERSION" echo packer version