- Add Cloud for Sovereignty landing zone architecture and deployment - Implement complete legal document management system - Reorganize documentation with improved navigation - Add infrastructure improvements (Dockerfiles, K8s, monitoring) - Add operational improvements (graceful shutdown, rate limiting, caching) - Create comprehensive project structure documentation - Add Azure deployment automation scripts - Improve repository navigation and organization
134 lines
3.7 KiB
Bash
Executable File
134 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Validate Azure environment variables from .env file
|
|
# Ensures all required variables are set for deployments
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
ENV_FILE="$PROJECT_ROOT/.env"
|
|
|
|
echo "🔍 Validating Azure environment configuration..."
|
|
|
|
# Load environment file if it exists
|
|
if [ -f "$ENV_FILE" ]; then
|
|
echo "Loading environment from: $ENV_FILE"
|
|
set -a
|
|
source "$ENV_FILE"
|
|
set +a
|
|
else
|
|
echo "⚠️ No .env file found at: $ENV_FILE"
|
|
echo "Creating from example..."
|
|
if [ -f "$PROJECT_ROOT/infra/terraform/.env.example" ]; then
|
|
cp "$PROJECT_ROOT/infra/terraform/.env.example" "$ENV_FILE"
|
|
echo "✅ Created $ENV_FILE - please fill in your values"
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
# Required Azure variables
|
|
REQUIRED_VARS=(
|
|
"ARM_SUBSCRIPTION_ID"
|
|
"ARM_TENANT_ID"
|
|
)
|
|
|
|
# Optional but recommended
|
|
RECOMMENDED_VARS=(
|
|
"ARM_LOCATION"
|
|
"TF_VAR_environment"
|
|
"TF_VAR_resource_group_name"
|
|
"TF_VAR_storage_account_name"
|
|
"TF_VAR_key_vault_name"
|
|
)
|
|
|
|
# Check required variables
|
|
MISSING_REQUIRED=()
|
|
for var in "${REQUIRED_VARS[@]}"; do
|
|
if [ -z "${!var}" ]; then
|
|
MISSING_REQUIRED+=("$var")
|
|
fi
|
|
done
|
|
|
|
# Check recommended variables
|
|
MISSING_RECOMMENDED=()
|
|
for var in "${RECOMMENDED_VARS[@]}"; do
|
|
if [ -z "${!var}" ]; then
|
|
MISSING_RECOMMENDED+=("$var")
|
|
fi
|
|
done
|
|
|
|
# Report results
|
|
if [ ${#MISSING_REQUIRED[@]} -gt 0 ]; then
|
|
echo "❌ Missing required variables:"
|
|
for var in "${MISSING_REQUIRED[@]}"; do
|
|
echo " - $var"
|
|
done
|
|
echo ""
|
|
echo "Please set these in your .env file."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ${#MISSING_RECOMMENDED[@]} -gt 0 ]; then
|
|
echo "⚠️ Missing recommended variables (will use defaults):"
|
|
for var in "${MISSING_RECOMMENDED[@]}"; do
|
|
echo " - $var"
|
|
done
|
|
echo ""
|
|
fi
|
|
|
|
# Validate Azure CLI authentication
|
|
if command -v az &> /dev/null; then
|
|
if az account show &> /dev/null; then
|
|
CURRENT_SUB=$(az account show --query id -o tsv)
|
|
if [ "$CURRENT_SUB" != "$ARM_SUBSCRIPTION_ID" ]; then
|
|
echo "⚠️ Azure CLI subscription ($CURRENT_SUB) differs from ARM_SUBSCRIPTION_ID"
|
|
echo " Setting Azure CLI to use: $ARM_SUBSCRIPTION_ID"
|
|
az account set --subscription "$ARM_SUBSCRIPTION_ID" || true
|
|
fi
|
|
else
|
|
echo "⚠️ Not logged in to Azure CLI. Run: az login"
|
|
fi
|
|
else
|
|
echo "⚠️ Azure CLI not installed. Install from: https://aka.ms/InstallAzureCLIDeb"
|
|
fi
|
|
|
|
# Set defaults for missing recommended vars
|
|
export ARM_LOCATION="${ARM_LOCATION:-westeurope}"
|
|
export TF_VAR_environment="${TF_VAR_environment:-dev}"
|
|
export TF_VAR_azure_region="${ARM_LOCATION}"
|
|
|
|
# Export Terraform variables
|
|
export TF_VAR_subscription_id="${ARM_SUBSCRIPTION_ID}"
|
|
export TF_VAR_tenant_id="${ARM_TENANT_ID}"
|
|
export TF_VAR_client_id="${ARM_CLIENT_ID:-}"
|
|
export TF_VAR_client_secret="${ARM_CLIENT_SECRET:-}"
|
|
|
|
# Generate resource names if not set
|
|
if [ -z "$TF_VAR_resource_group_name" ]; then
|
|
export TF_VAR_resource_group_name="the-order-rg-${TF_VAR_environment}"
|
|
fi
|
|
|
|
if [ -z "$TF_VAR_storage_account_name" ]; then
|
|
# Generate unique storage account name
|
|
TIMESTAMP=$(date +%s | tail -c 5)
|
|
export TF_VAR_storage_account_name="theorder${TF_VAR_environment}${TIMESTAMP}"
|
|
fi
|
|
|
|
if [ -z "$TF_VAR_key_vault_name" ]; then
|
|
export TF_VAR_key_vault_name="the-order-kv-${TF_VAR_environment}"
|
|
fi
|
|
|
|
echo "✅ Environment validation complete!"
|
|
echo ""
|
|
echo "Azure Configuration:"
|
|
echo " Subscription ID: ${ARM_SUBSCRIPTION_ID:0:8}..."
|
|
echo " Tenant ID: ${ARM_TENANT_ID:0:8}..."
|
|
echo " Location: ${ARM_LOCATION}"
|
|
echo " Environment: ${TF_VAR_environment}"
|
|
echo " Resource Group: ${TF_VAR_resource_group_name}"
|
|
echo " Storage Account: ${TF_VAR_storage_account_name}"
|
|
echo " Key Vault: ${TF_VAR_key_vault_name}"
|
|
echo ""
|
|
echo "All Terraform variables are set and ready for deployment."
|
|
|