Jesús Pérez 6a59d34bb1
chore: update provisioning configuration and documentation
Update configuration files, templates, and internal documentation
for the provisioning repository system.

Configuration Updates:
- KMS configuration modernization
- Plugin system settings
- Service port mappings
- Test cluster topologies
- Installation configuration examples
- VM configuration defaults
- Cedar authorization policies

Documentation Updates:
- Library module documentation
- Extension API guides
- AI system documentation
- Service management guides
- Test environment setup
- Plugin usage guides
- Validator configuration documentation

All changes are backward compatible.
2025-12-11 21:50:42 +00:00

323 lines
9.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Local Development Environment Deployment Script
# This script deploys a basic local development environment
set -euo pipefail
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SETTINGS_FILE="${SCRIPT_DIR}/settings.k"
CONFIG_FILE="${SCRIPT_DIR}/config.toml"
CHECK_MODE=false
# Function to print colored output
print_status() {
local color=$1
local message=$2
echo -e "${color}${message}${NC}"
}
print_step() {
print_status $BLUE "🔄 $1"
}
print_success() {
print_status $GREEN "$1"
}
print_warning() {
print_status $YELLOW "⚠️ $1"
}
print_error() {
print_status $RED "$1"
}
# Function to check if provisioning command is available
check_provisioning() {
if ! command -v provisioning &> /dev/null; then
print_error "Provisioning command not found. Please install provisioning first."
exit 1
fi
print_success "Provisioning available"
}
# Function to validate configuration
validate_config() {
print_step "Validating configuration..."
if ! provisioning validate config --settings "$SETTINGS_FILE"; then
print_error "Configuration validation failed"
exit 1
fi
print_success "Configuration validation passed"
}
# Function to check prerequisites
check_prerequisites() {
print_step "Checking prerequisites..."
# Check if Docker is available (for local provider)
if command -v docker &> /dev/null; then
if ! docker ps &> /dev/null; then
print_warning "Docker is installed but not running. Some local provider features may not work."
else
print_success "Docker is available and running"
fi
else
print_warning "Docker not found. Local provider will use alternative methods."
fi
# Check available disk space (need at least 5GB)
available_space=$(df "$SCRIPT_DIR" | tail -1 | awk '{print $4}')
required_space=$((5 * 1024 * 1024)) # 5GB in KB
if [ "$available_space" -lt "$required_space" ]; then
print_error "Insufficient disk space. Need at least 5GB, have $(($available_space / 1024 / 1024))GB"
exit 1
fi
print_success "Prerequisites check passed"
}
# Function to deploy servers
deploy_servers() {
print_step "Deploying servers..."
local cmd_args=(
"server" "create"
"--settings" "$SETTINGS_FILE"
)
if [ "$CHECK_MODE" = true ]; then
cmd_args+=("--check")
print_step "Running in check mode (dry run)"
fi
if ! provisioning "${cmd_args[@]}"; then
print_error "Server deployment failed"
exit 1
fi
if [ "$CHECK_MODE" = false ]; then
print_success "Servers deployed successfully"
# Wait for servers to be ready
print_step "Waiting for servers to be ready..."
sleep 10 # Give servers time to initialize
# Verify servers are running
provisioning server list --settings "$SETTINGS_FILE"
else
print_success "Server deployment plan validated"
fi
}
# Function to install task services
install_services() {
if [ "$CHECK_MODE" = true ]; then
print_step "Skipping service installation in check mode"
return
fi
print_step "Installing task services..."
# Install container runtime first (dependency for other services)
print_step "Installing containerd..."
if ! provisioning taskserv create containerd --settings "$SETTINGS_FILE" --yes; then
print_warning "Containerd installation failed, continuing..."
else
print_success "Containerd installed"
fi
# Install Nginx on web server
print_step "Installing Nginx on web server..."
if ! provisioning taskserv create nginx --servers web-dev-01 --settings "$SETTINGS_FILE" --yes; then
print_warning "Nginx installation failed, continuing..."
else
print_success "Nginx installed on web-dev-01"
fi
# Install PostgreSQL on database server
print_step "Installing PostgreSQL on database server..."
if ! provisioning taskserv create postgresql --servers db-dev-01 --settings "$SETTINGS_FILE" --yes; then
print_warning "PostgreSQL installation failed, continuing..."
else
print_success "PostgreSQL installed on db-dev-01"
fi
# Install Redis on database server
print_step "Installing Redis on database server..."
if ! provisioning taskserv create redis --servers db-dev-01 --settings "$SETTINGS_FILE" --yes; then
print_warning "Redis installation failed, continuing..."
else
print_success "Redis installed on db-dev-01"
fi
# Install Node.js on web server
print_step "Installing Node.js on web server..."
if ! provisioning taskserv create nodejs --servers web-dev-01 --settings "$SETTINGS_FILE" --yes; then
print_warning "Node.js installation failed, continuing..."
else
print_success "Node.js installed on web-dev-01"
fi
print_success "Task services installation completed"
}
# Function to verify deployment
verify_deployment() {
if [ "$CHECK_MODE" = true ]; then
print_step "Skipping verification in check mode"
return
fi
print_step "Verifying deployment..."
# Check server status
print_step "Checking server status..."
provisioning server list --settings "$SETTINGS_FILE"
# Check installed services
print_step "Checking installed services..."
provisioning taskserv list --settings "$SETTINGS_FILE" --installed
# Try to SSH to servers
print_step "Testing SSH connectivity..."
if provisioning server ssh web-dev-01 --settings "$SETTINGS_FILE" --command "echo 'Web server SSH OK'" 2>/dev/null; then
print_success "SSH to web-dev-01 working"
else
print_warning "SSH to web-dev-01 failed"
fi
if provisioning server ssh db-dev-01 --settings "$SETTINGS_FILE" --command "echo 'Database server SSH OK'" 2>/dev/null; then
print_success "SSH to db-dev-01 working"
else
print_warning "SSH to db-dev-01 failed"
fi
print_success "Deployment verification completed"
}
# Function to show usage information
show_usage() {
cat << EOF
Local Development Environment Deployment Script
Usage: $0 [OPTIONS]
OPTIONS:
--check, -c Run in check mode (dry run, show what would be deployed)
--help, -h Show this help message
EXAMPLES:
$0 Deploy the development environment
$0 --check See what would be deployed without making changes
$0 -c Same as --check
ENVIRONMENT:
PROVISIONING_DEBUG=true Enable debug output
PROVISIONING_ENV=dev Set environment (already set to dev for this example)
FILES:
settings.k Infrastructure definition
config.toml Environment configuration
deploy.sh This deployment script
verify.sh Verification script
cleanup.sh Cleanup script
For more information, see README.md
EOF
}
# Function to show post-deployment information
show_post_deployment_info() {
if [ "$CHECK_MODE" = true ]; then
return
fi
print_success "Local Development Environment Deployment Complete!"
echo
print_status $BLUE "📋 What was created:"
echo " • web-dev-01: Web development server (192.168.100.10)"
echo " • db-dev-01: Database server (192.168.100.11)"
echo
print_status $BLUE "🔧 Installed services:"
echo " • Nginx web server (port 80)"
echo " • PostgreSQL database (port 5432)"
echo " • Redis cache (port 6379)"
echo " • Node.js runtime"
echo " • Container runtime (containerd)"
echo
print_status $BLUE "🚀 Next steps:"
echo " • SSH to servers: provisioning server ssh web-dev-01 --settings settings.k"
echo " • Verify deployment: ./verify.sh"
echo " • Start developing your application"
echo " • When done, clean up: ./cleanup.sh"
echo
print_status $BLUE "📚 Learn more:"
echo " • Read README.md for detailed usage"
echo " • Try other examples in ../../"
echo " • Check the troubleshooting guide if you have issues"
echo
}
# Main deployment function
main() {
local start_time=$(date +%s)
print_status $BLUE "🚀 Local Development Environment Deployment"
print_status $BLUE "=============================================="
echo
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--check|-c)
CHECK_MODE=true
shift
;;
--help|-h)
show_usage
exit 0
;;
*)
print_error "Unknown option: $1"
show_usage
exit 1
;;
esac
done
# Set environment variable
export PROVISIONING_ENV=development
# Run deployment steps
check_provisioning
check_prerequisites
validate_config
deploy_servers
install_services
verify_deployment
local end_time=$(date +%s)
local duration=$((end_time - start_time))
echo
print_success "Deployment completed in ${duration} seconds"
show_post_deployment_info
}
# Error handling
trap 'print_error "Deployment failed. Check the output above for details."; exit 1' ERR
# Run main function
main "$@"