#!/bin/bash # Copyright (C) The Arvados Authors. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 JSON_FILE=$1 ARVADOS_CLUSTER=$2 PROJECT_ID=$3 ACCOUNT_FILE=$4 read -rd "\000" helpmessage <&2 "$helpmessage" echo >&2 exit 1 ;; --json-file) JSON_FILE="$2"; shift ;; --arvados-cluster-id) ARVADOS_CLUSTER_ID="$2"; shift ;; --aws-source-ami) AWS_SOURCE_AMI="$2"; shift ;; --aws-profile) AWS_PROFILE="$2"; shift ;; --aws-secrets-file) AWS_SECRETS_FILE="$2"; shift ;; --aws-region) AWS_DEFAULT_REGION="$2"; shift ;; --aws-vpc-id) AWS_VPC_ID="$2"; shift ;; --aws-subnet-id) AWS_SUBNET_ID="$2"; shift ;; --aws-ebs-autoscale) AWS_EBS_AUTOSCALE=1 ;; --gcp-project-id) GCP_PROJECT_ID="$2"; shift ;; --gcp-account-file) GCP_ACCOUNT_FILE="$2"; shift ;; --gcp-zone) GCP_ZONE="$2"; shift ;; --azure-secrets-file) AZURE_SECRETS_FILE="$2"; shift ;; --azure-resource-group) AZURE_RESOURCE_GROUP="$2"; shift ;; --azure-location) AZURE_LOCATION="$2"; shift ;; --azure-sku) AZURE_SKU="$2"; shift ;; --azure-cloud-environment) AZURE_CLOUD_ENVIRONMENT="$2"; shift ;; --ssh_user) SSH_USER="$2"; shift ;; --resolver) RESOLVER="$2"; shift ;; --reposuffix) REPOSUFFIX="$2"; shift ;; --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. # This will allow you to ssh in, if you use the .pem file that packer # generates in this directory as the ssh key. The base image uses the admin # user and ssh port 22. EXTRA=" -debug" ;; --) if [ $# -gt 1 ]; then echo >&2 "$0: unrecognized argument '$2'. Try: $0 --help" exit 1 fi ;; esac shift done if [[ -z "$JSON_FILE" ]] || [[ ! -f "$JSON_FILE" ]]; then echo >&2 "$helpmessage" echo >&2 echo >&2 "ERROR: packer json file not found" echo >&2 exit 1 fi if [[ -z "$ARVADOS_CLUSTER_ID" ]]; then echo >&2 "$helpmessage" echo >&2 echo >&2 "ERROR: arvados cluster id not specified" echo >&2 exit 1 fi if [[ -z "$PUBLIC_KEY_FILE" ]] || [[ ! -f "$PUBLIC_KEY_FILE" ]]; then echo >&2 "$helpmessage" echo >&2 echo >&2 "ERROR: public key file file not found" echo >&2 exit 1 fi if [[ ! -z "$AWS_SECRETS_FILE" ]]; then source $AWS_SECRETS_FILE fi if [[ ! -z "$AZURE_SECRETS_FILE" ]]; then source $AZURE_SECRETS_FILE fi EXTRA2="" if [[ -n "$AWS_SOURCE_AMI" ]]; then EXTRA2+=" -var aws_source_ami=$AWS_SOURCE_AMI" fi if [[ -n "$AWS_PROFILE" ]]; then EXTRA2+=" -var aws_profile=$AWS_PROFILE" fi if [[ -n "$AWS_VPC_ID" ]]; then EXTRA2+=" -var vpc_id=$AWS_VPC_ID -var associate_public_ip_address=true " fi if [[ -n "$AWS_SUBNET_ID" ]]; then EXTRA2+=" -var subnet_id=$AWS_SUBNET_ID -var associate_public_ip_address=true " fi if [[ -n "$AWS_DEFAULT_REGION" ]]; then EXTRA2+=" -var aws_default_region=$AWS_DEFAULT_REGION" fi 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 [[ -n "$GCP_ACCOUNT_FILE" ]]; then EXTRA2+=" -var account_file=$GCP_ACCOUNT_FILE" fi if [[ -n "$GCP_ZONE" ]]; then EXTRA2+=" -var zone=$GCP_ZONE" fi if [[ -n "$AZURE_RESOURCE_GROUP" ]]; then EXTRA2+=" -var resource_group=$AZURE_RESOURCE_GROUP" fi if [[ -n "$AZURE_LOCATION" ]]; then EXTRA2+=" -var location=$AZURE_LOCATION" fi if [[ -n "$AZURE_SKU" ]]; then EXTRA2+=" -var image_sku=$AZURE_SKU" fi if [[ -n "$AZURE_CLOUD_ENVIRONMENT" ]]; then EXTRA2+=" -var cloud_environment_name=$AZURE_CLOUD_ENVIRONMENT" fi if [[ -n "$SSH_USER" ]]; then EXTRA2+=" -var ssh_user=$SSH_USER" fi if [[ -n "$RESOLVER" ]]; then EXTRA2+=" -var resolver=$RESOLVER" fi if [[ -n "$REPOSUFFIX" ]]; then EXTRA2+=" -var reposuffix=$REPOSUFFIX" fi 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 echo echo packer build$EXTRA -var "arvados_cluster=$ARVADOS_CLUSTER_ID"$EXTRA2 $JSON_FILE packer build$EXTRA -var "arvados_cluster=$ARVADOS_CLUSTER_ID"$EXTRA2 $JSON_FILE