Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
189 lines
4.3 KiB
Bash
Executable File
189 lines
4.3 KiB
Bash
Executable File
#!/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 "$@"
|
||
|