Files
smom-dbis-138/scripts/deployment/get-app-gateway-ip.sh

122 lines
3.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Get Application Gateway IP
# Helper script to get the public IP address of the Application Gateway
set -euo pipefail
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Load environment variables
if [ -f "${PROJECT_ROOT}/.env" ]; then
set -a
source "${PROJECT_ROOT}/.env"
set +a
fi
AZURE_RESOURCE_GROUP="${AZURE_RESOURCE_GROUP:-defi-oracle-mainnet-rg}"
# Logging function
log() {
log_success "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}
error() {
log_error "[ERROR] $1"
exit 1
}
warn() {
log_warn "[WARNING] $1"
}
# Get Application Gateway IP from Terraform output
get_ip_from_terraform() {
cd "${PROJECT_ROOT}/terraform" || error "Failed to change directory to terraform"
if [ ! -f "terraform.tfstate" ] && [ ! -d ".terraform" ]; then
return 1
fi
APP_GATEWAY_NAME=$(terraform output -raw app_gateway_name 2>/dev/null || echo "")
if [ -z "$APP_GATEWAY_NAME" ]; then
return 1
fi
cd "${PROJECT_ROOT}" || error "Failed to change directory to project root"
# Get IP from Azure
APP_GATEWAY_IP=$(az network application-gateway show \
--resource-group "$AZURE_RESOURCE_GROUP" \
--name "$APP_GATEWAY_NAME" \
--query "frontendIPConfigurations[0].publicIpAddress.id" \
-o tsv 2>/dev/null | xargs az network public-ip show --ids --query ipAddress -o tsv 2>/dev/null || echo "")
if [ -n "$APP_GATEWAY_IP" ]; then
echo "$APP_GATEWAY_IP"
return 0
fi
return 1
}
# Get Application Gateway IP from Azure directly
get_ip_from_azure() {
# List all application gateways in the resource group
APP_GATEWAY_NAME=$(az network application-gateway list \
--resource-group "$AZURE_RESOURCE_GROUP" \
--query "[0].name" \
-o tsv 2>/dev/null || echo "")
if [ -z "$APP_GATEWAY_NAME" ] || [ "$APP_GATEWAY_NAME" = "null" ]; then
return 1
fi
# Get public IP address
APP_GATEWAY_IP=$(az network application-gateway show \
--resource-group "$AZURE_RESOURCE_GROUP" \
--name "$APP_GATEWAY_NAME" \
--query "frontendIPConfigurations[0].publicIpAddress.id" \
-o tsv 2>/dev/null | xargs az network public-ip show --ids --query ipAddress -o tsv 2>/dev/null || echo "")
if [ -n "$APP_GATEWAY_IP" ]; then
echo "$APP_GATEWAY_IP"
return 0
fi
return 1
}
# Main function
main() {
log "Getting Application Gateway IP address..."
# Try to get from Terraform output first
if APP_GATEWAY_IP=$(get_ip_from_terraform); then
log "Application Gateway IP (from Terraform): $APP_GATEWAY_IP"
echo "$APP_GATEWAY_IP"
return 0
fi
# Try to get from Azure directly
if APP_GATEWAY_IP=$(get_ip_from_azure); then
log "Application Gateway IP (from Azure): $APP_GATEWAY_IP"
echo "$APP_GATEWAY_IP"
return 0
fi
error "Failed to get Application Gateway IP address. Please check:"
error " 1. Azure credentials are configured"
error " 2. Resource group exists: $AZURE_RESOURCE_GROUP"
error " 3. Application Gateway is deployed"
error " 4. Application Gateway has a public IP address"
}
# Run main function
main "$@"