create-sa.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. WORK_DIR=$(dirname $0)
  3. source ${WORK_DIR}/env-sa
  4. source ${WORK_DIR}/common-libs
  5. if [[ -z "$SA_RESOURCE_GROUP" ]] || [[ -z "$SA_LOCATION" ]] || [[ -z "$STORAGE_ACCOUNT_NAME" ]]
  6. then
  7. echo "Miss one of SA_RESOURCE_GROUP, SA_LOCATION and STORAGE_ACCOUNT_NAME"
  8. exit 1
  9. fi
  10. [[ -n "$SUBSCRIPTION" ]] && az account set --subscription $SUBSCRIPTION
  11. VALUES_FILE=${WORK_DIR}/../hpcc-azurefile/values.yaml
  12. SECRET_NAME_INPUT=$(cat $VALUES_FILE | grep "^[[:space:]]*secretName:"|cut -d':' -f2|sed 's/[[:space:]\"]//g')
  13. SECRET_NAMESPACE_INPUT=$(cat $VALUES_FILE | grep "^[[:space:]]*secretNamespace:"|cut -d':' -f2|sed 's/[[:space:]\"]//g')
  14. [[ -n "$SECRET_NAME_INPUT" ]] && SECRET_NAME=${SECRET_NAME_INPUT}
  15. [[ -n "$SECRET_NAMESPACE_INPUT" ]] && SECRET_NAMESPACE=${SECRET_NAMESPACE_INPUT}
  16. get_share_names
  17. [[ -n "$SHARE_NAMES_INPUT" ]] && SHARE_NAMES=${SHARE_NAMES_INPUT}
  18. SHARE_NAMES=$(echo $SHARE_NAMES | sed 's/,/ /g' | tr -s ' ' | sed 's/^ $//g' )
  19. if [[ -z "$SECRET_NAME" ]] || [[ -z "$SECRET_NAMESPACE" ]] || [[ -z "$SHARE_NAMES" ]]
  20. then
  21. echo "Miss one of SECRET_NAME, SECRET_NAMESPACE and SHARE_NAMES"
  22. exit 1
  23. fi
  24. # Create a resource group
  25. # Check Resource Group
  26. rc=$(az group exists --name ${SA_RESOURCE_GROUP})
  27. if [ "$rc" != "true" ]
  28. then
  29. az group create --name ${SA_RESOURCE_GROUP} --location ${SA_LOCATION} --tags ${TAGS}
  30. fi
  31. az storage account check-name -n $STORAGE_ACCOUNT_NAME | \
  32. grep -q "\"reason\":[[:space:]]\"AlreadyExist\""
  33. if [ $? -ne 0 ]
  34. then
  35. # Create a storage account
  36. az storage account create \
  37. -n $STORAGE_ACCOUNT_NAME \
  38. -g $SA_RESOURCE_GROUP \
  39. -l $SA_LOCATION \
  40. --sku $SA_SKU \
  41. --tags ${TAGS}
  42. fi
  43. # Export the connection string as an environment variable,
  44. # this is used when creating the Azure file share
  45. export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string \
  46. -n $STORAGE_ACCOUNT_NAME -g $SA_RESOURCE_GROUP -o tsv)
  47. for shareName in $SHARE_NAMES
  48. do
  49. az storage share exists --connection-string "${AZURE_STORAGE_CONNECTION_STRING}" \
  50. --name $shareName | grep -q "\"exists\":[[:space:]]*false"
  51. if [ $? -ne 0 ]
  52. then
  53. echo "create share $shareName"
  54. az storage share create \
  55. -n $shareName \
  56. --connection-string "${AZURE_STORAGE_CONNECTION_STRING}"
  57. fi
  58. done
  59. # Get storage account key
  60. STORAGE_KEY=$(az storage account keys list \
  61. --resource-group $SA_RESOURCE_GROUP \
  62. --account-name $STORAGE_ACCOUNT_NAME \
  63. --query "[0].value" -o tsv)
  64. # Echo storage account name and key
  65. # echo Storage account name: $STORAGE_ACCOUNT_NAME
  66. mkdir -p $SA_KEY_DIR
  67. echo Storage account key: $STORAGE_KEY > ${SA_KEY_DIR}/${STORAGE_ACCOUNT_NAME}.key
  68. # cat ${SA_KEY_DIR}/${STORAGE_ACCOUNT_NAME}.key