Skip to content

Instantly share code, notes, and snippets.

@samloh84
Created July 6, 2020 02:57
Show Gist options
  • Save samloh84/965c922fff6395c5ba612c564d2ce06a to your computer and use it in GitHub Desktop.
Save samloh84/965c922fff6395c5ba612c564d2ce06a to your computer and use it in GitHub Desktop.
.azurerc
#!/bin/bash
ARM_TENANT_ID="${ARM_TENANT_ID:-}"
ARM_SUBSCRIPTION_ID="${ARM_SUBSCRIPTION_ID:-}"
ARM_SERVICE_PRINCIPAL_CREDENTIALS_PATH="${HOME}/.azure/terraform_service_principal_credentials.json"
AZURE_LOGGED_IN=0
AZURE_ACCESS_TOKEN=$(az account get-access-token --subscription "${ARM_SUBSCRIPTION_ID}")
AZURE_GET_ACCESS_TOKEN_EXIT_CODE=$?
if [[ ${AZURE_GET_ACCESS_TOKEN_EXIT_CODE} -eq 0 ]]; then
AZ_EXPIRY_TIMESTAMP=$(echo "${AZURE_ACCESS_TOKEN}" | jq '.expiresOn | capture("(?<timestamp>[[:digit:]]+-[[:digit:]]+-[[:digit:]]+ [[:digit:]]+:[[:digit:]]+:[[:digit:]]+)").timestamp | strptime("%Y-%m-%d %H:%M:%S") | mktime')
CURRENT_TIMESTAMP="$(date +"%s")"
if [[ ${AZ_EXPIRY_TIMESTAMP} -gt ${CURRENT_TIMESTAMP} ]]; then
AZURE_LOGGED_IN=1
fi
fi
if [[ ${AZURE_LOGGED_IN} -ne 1 ]]; then
az login --tenant "${ARM_TENANT_ID}"
fi
az account set --subscription "${ARM_SUBSCRIPTION_ID}"
if [[ ! -s "${ARM_SERVICE_PRINCIPAL_CREDENTIALS_PATH}" ]]; then
az ad sp create-for-rbac --name terraform --role owner --scopes /subscriptions/${ARM_SUBSCRIPTION_ID} | tee "${ARM_SERVICE_PRINCIPAL_CREDENTIALS_PATH}"
fi
ARM_CLIENT_ID="$(cat "${ARM_SERVICE_PRINCIPAL_CREDENTIALS_PATH}" | jq -r '.appId')"
ARM_CLIENT_SECRET="$(cat "${ARM_SERVICE_PRINCIPAL_CREDENTIALS_PATH}" | jq -r '.password')"
AZURE_TENANT_ID="${ARM_TENANT_ID}"
AZURE_SUBSCRIPTION_ID="${ARM_SUBSCRIPTION_ID}"
AZURE_CLIENT_ID="${ARM_CLIENT_ID}"
AZURE_CLIENT_SECRET="${ARM_CLIENT_SECRET}"
export ARM_TENANT_ID
export ARM_SUBSCRIPTION_ID
export ARM_CLIENT_ID
export ARM_CLIENT_SECRET
export AZURE_TENANT_ID
export AZURE_SUBSCRIPTION_ID
export AZURE_CLIENT_ID
export AZURE_CLIENT_SECRET
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment