- 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
189 lines
5.5 KiB
Bash
Executable File
189 lines
5.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Validate current .env file against Azure deployment requirements
|
|
# Provides detailed analysis and recommendations
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
ENV_FILE="$PROJECT_ROOT/.env"
|
|
|
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
echo "║ .ENV FILE ANALYSIS FOR AZURE DEPLOYMENTS ║"
|
|
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "❌ .env file not found at: $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "📄 Analyzing: $ENV_FILE"
|
|
echo ""
|
|
|
|
# Load environment
|
|
set -a
|
|
source "$ENV_FILE"
|
|
set +a
|
|
|
|
# Check required variables
|
|
echo "✅ REQUIRED VARIABLES:"
|
|
echo ""
|
|
|
|
# Subscription ID
|
|
if [ -n "$AZURE_SUBSCRIPTION_ID" ] || [ -n "$ARM_SUBSCRIPTION_ID" ]; then
|
|
SUB_ID="${AZURE_SUBSCRIPTION_ID:-$ARM_SUBSCRIPTION_ID}"
|
|
echo " ✓ Subscription ID: ${SUB_ID:0:8}...${SUB_ID: -4}"
|
|
if [[ ! "$SUB_ID" =~ ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ ]]; then
|
|
echo " ⚠️ Warning: Format may be invalid (should be UUID)"
|
|
fi
|
|
else
|
|
echo " ❌ Subscription ID: MISSING"
|
|
fi
|
|
|
|
# Tenant ID
|
|
if [ -n "$AZURE_TENANT_ID" ] || [ -n "$ARM_TENANT_ID" ]; then
|
|
TENANT_ID="${AZURE_TENANT_ID:-$ARM_TENANT_ID}"
|
|
echo " ✓ Tenant ID: ${TENANT_ID:0:8}...${TENANT_ID: -4}"
|
|
if [[ ! "$TENANT_ID" =~ ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ ]]; then
|
|
echo " ⚠️ Warning: Format may be invalid (should be UUID)"
|
|
fi
|
|
else
|
|
echo " ❌ Tenant ID: MISSING"
|
|
fi
|
|
|
|
# Location
|
|
if [ -n "$AZURE_LOCATION" ] || [ -n "$ARM_LOCATION" ]; then
|
|
LOCATION="${AZURE_LOCATION:-$ARM_LOCATION}"
|
|
echo " ✓ Location: $LOCATION"
|
|
if [[ "$LOCATION" =~ ^us ]]; then
|
|
echo " ❌ ERROR: US regions are not allowed!"
|
|
fi
|
|
else
|
|
echo " ⚠️ Location: NOT SET (will default to westeurope)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "📋 OPTIONAL BUT RECOMMENDED:"
|
|
echo ""
|
|
|
|
# Management Group
|
|
if [ -n "$AZURE_MANAGEMENT_GROUP_ID" ]; then
|
|
echo " ✓ Management Group: $AZURE_MANAGEMENT_GROUP_ID"
|
|
else
|
|
echo " ○ Management Group: Not set"
|
|
fi
|
|
|
|
# Resource Group
|
|
if [ -n "$AZURE_RESOURCE_GROUP" ] || [ -n "$TF_VAR_resource_group_name" ]; then
|
|
RG="${AZURE_RESOURCE_GROUP:-$TF_VAR_resource_group_name}"
|
|
echo " ✓ Resource Group: $RG"
|
|
else
|
|
echo " ⚠️ Resource Group: Not set (will use default naming convention)"
|
|
fi
|
|
|
|
# Environment
|
|
if [ -n "$TF_VAR_environment" ]; then
|
|
echo " ✓ Environment: $TF_VAR_environment"
|
|
else
|
|
echo " ⚠️ Environment: Not set (will default to 'dev')"
|
|
fi
|
|
|
|
# Storage Account
|
|
if [ -n "$TF_VAR_storage_account_name" ] || [ -n "$AZURE_STORAGE_ACCOUNT" ]; then
|
|
SA="${TF_VAR_storage_account_name:-$AZURE_STORAGE_ACCOUNT}"
|
|
echo " ✓ Storage Account: $SA"
|
|
else
|
|
echo " ⚠️ Storage Account: Not set (will use default naming)"
|
|
fi
|
|
|
|
# Key Vault
|
|
if [ -n "$TF_VAR_key_vault_name" ] || [ -n "$AZURE_KEY_VAULT_NAME" ]; then
|
|
KV="${TF_VAR_key_vault_name:-$AZURE_KEY_VAULT_NAME}"
|
|
echo " ✓ Key Vault: $KV"
|
|
else
|
|
echo " ⚠️ Key Vault: Not set (will use default naming)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "🔧 TERRAFORM VARIABLE MAPPING:"
|
|
echo ""
|
|
|
|
# Check if variables need to be mapped
|
|
NEEDS_MAPPING=false
|
|
|
|
if [ -n "$AZURE_SUBSCRIPTION_ID" ] && [ -z "$ARM_SUBSCRIPTION_ID" ]; then
|
|
echo " ⚠️ AZURE_SUBSCRIPTION_ID found, but Terraform expects ARM_SUBSCRIPTION_ID"
|
|
echo " Recommendation: Add ARM_SUBSCRIPTION_ID=\"$AZURE_SUBSCRIPTION_ID\""
|
|
NEEDS_MAPPING=true
|
|
fi
|
|
|
|
if [ -n "$AZURE_TENANT_ID" ] && [ -z "$ARM_TENANT_ID" ]; then
|
|
echo " ⚠️ AZURE_TENANT_ID found, but Terraform expects ARM_TENANT_ID"
|
|
echo " Recommendation: Add ARM_TENANT_ID=\"$AZURE_TENANT_ID\""
|
|
NEEDS_MAPPING=true
|
|
fi
|
|
|
|
if [ -n "$AZURE_LOCATION" ] && [ -z "$ARM_LOCATION" ]; then
|
|
echo " ⚠️ AZURE_LOCATION found, but Terraform expects ARM_LOCATION"
|
|
echo " Recommendation: Add ARM_LOCATION=\"$AZURE_LOCATION\""
|
|
NEEDS_MAPPING=true
|
|
fi
|
|
|
|
if [ "$NEEDS_MAPPING" = false ]; then
|
|
echo " ✓ All variables properly mapped for Terraform"
|
|
fi
|
|
|
|
echo ""
|
|
echo "📊 SUMMARY:"
|
|
echo ""
|
|
|
|
# Count issues
|
|
ISSUES=0
|
|
WARNINGS=0
|
|
|
|
if [ -z "$AZURE_SUBSCRIPTION_ID" ] && [ -z "$ARM_SUBSCRIPTION_ID" ]; then
|
|
ISSUES=$((ISSUES + 1))
|
|
fi
|
|
|
|
if [ -z "$AZURE_TENANT_ID" ] && [ -z "$ARM_TENANT_ID" ]; then
|
|
ISSUES=$((ISSUES + 1))
|
|
fi
|
|
|
|
if [ -z "$AZURE_LOCATION" ] && [ -z "$ARM_LOCATION" ]; then
|
|
WARNINGS=$((WARNINGS + 1))
|
|
fi
|
|
|
|
if [ "$ISSUES" -eq 0 ] && [ "$WARNINGS" -eq 0 ]; then
|
|
echo " ✅ .env file is properly configured for Azure deployments"
|
|
elif [ "$ISSUES" -eq 0 ]; then
|
|
echo " ⚠️ .env file is mostly configured ($WARNINGS warning(s))"
|
|
else
|
|
echo " ❌ .env file has $ISSUES critical issue(s) and $WARNINGS warning(s)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "💡 RECOMMENDATIONS:"
|
|
echo ""
|
|
|
|
if [ "$NEEDS_MAPPING" = true ]; then
|
|
echo " 1. Add ARM_* variables for Terraform compatibility"
|
|
echo " (Our scripts will auto-map, but explicit is better)"
|
|
fi
|
|
|
|
if [ -z "$TF_VAR_environment" ]; then
|
|
echo " 2. Add TF_VAR_environment=\"dev\" (or stage/prod)"
|
|
fi
|
|
|
|
if [ -z "$TF_VAR_resource_group_name" ] && [ -z "$AZURE_RESOURCE_GROUP" ]; then
|
|
echo " 3. Consider setting TF_VAR_resource_group_name for custom naming"
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ Analysis complete!"
|
|
echo ""
|
|
echo "To use with Azure deployments:"
|
|
echo " source infra/scripts/azure-validate-env.sh"
|
|
echo " ./infra/scripts/azure-complete-setup.sh"
|
|
|