Initial commit: loc_az_hci (smom-dbis-138 excluded via .gitignore)
Some checks failed
Test / test (push) Has been cancelled
Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
188
scripts/utils/prerequisites-check.sh
Executable file
188
scripts/utils/prerequisites-check.sh
Executable file
@@ -0,0 +1,188 @@
|
||||
#!/bin/bash
|
||||
source ~/.bashrc
|
||||
# Prerequisites Check Script
|
||||
# Validates system requirements before deployment
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
CHECK_TYPE="${1:-all}"
|
||||
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
check_pass() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
check_fail() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
return 1
|
||||
}
|
||||
|
||||
check_proxmox() {
|
||||
log_info "Checking Proxmox VE installation..."
|
||||
|
||||
if command -v pvecm &> /dev/null && command -v pvesm &> /dev/null; then
|
||||
check_pass "Proxmox VE tools installed"
|
||||
pveversion | head -1
|
||||
else
|
||||
check_fail "Proxmox VE tools not found"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_network() {
|
||||
log_info "Checking network configuration..."
|
||||
|
||||
if ip link show vmbr0 &>/dev/null; then
|
||||
check_pass "Bridge vmbr0 exists"
|
||||
ip addr show vmbr0 | grep "inet " || check_warn "vmbr0 has no IP address"
|
||||
else
|
||||
check_warn "Bridge vmbr0 not found (may need network configuration)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_azure_cli() {
|
||||
log_info "Checking Azure CLI installation..."
|
||||
|
||||
if command -v az &> /dev/null; then
|
||||
check_pass "Azure CLI installed"
|
||||
az version | head -1
|
||||
|
||||
# Check if logged in
|
||||
if az account show &>/dev/null; then
|
||||
check_pass "Azure CLI authenticated"
|
||||
az account show --query "{subscriptionId:id, tenantId:tenantId}" -o table
|
||||
else
|
||||
check_warn "Azure CLI not authenticated (run 'az login')"
|
||||
fi
|
||||
else
|
||||
check_warn "Azure CLI not installed (required for Azure Arc onboarding)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_kubectl() {
|
||||
log_info "Checking kubectl installation..."
|
||||
|
||||
if command -v kubectl &> /dev/null; then
|
||||
check_pass "kubectl installed"
|
||||
kubectl version --client --short
|
||||
else
|
||||
check_warn "kubectl not installed (required for Kubernetes management)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_helm() {
|
||||
log_info "Checking Helm installation..."
|
||||
|
||||
if command -v helm &> /dev/null; then
|
||||
check_pass "Helm installed"
|
||||
helm version --short
|
||||
else
|
||||
check_warn "Helm not installed (required for GitOps deployments)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_docker() {
|
||||
log_info "Checking Docker installation..."
|
||||
|
||||
if command -v docker &> /dev/null; then
|
||||
check_pass "Docker installed"
|
||||
docker --version
|
||||
|
||||
if docker ps &>/dev/null; then
|
||||
check_pass "Docker daemon running"
|
||||
else
|
||||
check_warn "Docker daemon not running"
|
||||
fi
|
||||
else
|
||||
check_warn "Docker not installed (required for Git/GitLab deployment)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_terraform() {
|
||||
log_info "Checking Terraform installation..."
|
||||
|
||||
if command -v terraform &> /dev/null; then
|
||||
check_pass "Terraform installed"
|
||||
terraform version | head -1
|
||||
else
|
||||
check_warn "Terraform not installed (optional, for IaC)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_system_resources() {
|
||||
log_info "Checking system resources..."
|
||||
|
||||
# Check memory
|
||||
TOTAL_MEM=$(free -g | awk '/^Mem:/{print $2}')
|
||||
if [ "$TOTAL_MEM" -ge 8 ]; then
|
||||
check_pass "Memory: ${TOTAL_MEM}GB (minimum 8GB recommended)"
|
||||
else
|
||||
check_warn "Memory: ${TOTAL_MEM}GB (8GB+ recommended)"
|
||||
fi
|
||||
|
||||
# Check disk space
|
||||
DISK_SPACE=$(df -h / | awk 'NR==2 {print $4}')
|
||||
check_info "Available disk space: $DISK_SPACE"
|
||||
}
|
||||
|
||||
check_info() {
|
||||
echo -e "${GREEN}ℹ${NC} $1"
|
||||
}
|
||||
|
||||
main() {
|
||||
log_info "Running prerequisites check: $CHECK_TYPE"
|
||||
|
||||
case "$CHECK_TYPE" in
|
||||
proxmox)
|
||||
check_proxmox
|
||||
check_network
|
||||
;;
|
||||
azure)
|
||||
check_azure_cli
|
||||
;;
|
||||
kubernetes)
|
||||
check_kubectl
|
||||
check_helm
|
||||
;;
|
||||
git)
|
||||
check_docker
|
||||
;;
|
||||
all)
|
||||
check_proxmox
|
||||
check_network
|
||||
check_azure_cli
|
||||
check_kubectl
|
||||
check_helm
|
||||
check_docker
|
||||
check_terraform
|
||||
check_system_resources
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown check type: $CHECK_TYPE"
|
||||
log_info "Available types: proxmox, azure, kubernetes, git, all"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
log_info "Prerequisites check completed"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user