X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e4a68851e521c0e3152f9790683d8cdb1b3923df..722fbc71928e7fc6b91eb101788b51c2bb9577eb:/tools/compute-images/build.sh diff --git a/tools/compute-images/build.sh b/tools/compute-images/build.sh index 769b9a5b5a..5b3db262c1 100755 --- a/tools/compute-images/build.sh +++ b/tools/compute-images/build.sh @@ -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 to the packer json file (required) + --arvados-cluster-id + The ID of the Arvados cluster, e.g. zzzzz(required) + --aws-profile + AWS profile to use (valid profile from ~/.aws/config (optional) + --aws-secrets-file + 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 + The AMI to use as base for building the images (required if building for AWS) + --aws-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 for AWS, if not specified packer will derive from the subnet id or pick the default one. + --aws-subnet-id + 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 + 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 + Enable enhanced networking (default: true if building for AWS) + --gcp-project-id + GCP project id (required if building for GCP) + --gcp-account-file + GCP account file (required if building for GCP) + --gcp-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 + Azure secrets file which will be sourced from this script (required if building for Azure) + --azure-resource-group + Azure resource group (required if building for Azure) + --azure-location + Azure location, e.g. centralus, eastus, westeurope (required if building for Azure) + --azure-sku (required if building for Azure, e.g. 16.04-LTS) Azure SKU image to use - --ssh_user (default: packer) + --ssh_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 + The dns resolver for the machine (default: host's network provided) + --reposuffix 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 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" @@ -286,6 +315,9 @@ 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 echo