#!/bin/bash # AWS CDK Ubuntu Setup Script # This script installs all required software for AWS CDK development on Ubuntu reset;clear set -e # Exit on any error echo "==========================================" echo "AWS CDK Ubuntu Setup Script" echo "==========================================" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Function to print colored output print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Function to check if command exists command_exists() { command -v "$1" >/dev/null 2>&1 } # Update system packages print_status "Updating system packages..." sudo apt update && sudo apt upgrade -y print_success "System packages updated" # Install essential build tools and dependencies print_status "Installing essential build tools..." sudo apt install -y curl wget unzip git build-essential software-properties-common apt-transport-https ca-certificates gnupg lsb-release print_success "Essential build tools installed" # Install Node.js and npm using NodeSource repository (more reliable than nvm for scripts) print_status "Installing Node.js and npm..." if command_exists node; then print_warning "Node.js is already installed ($(node --version))" else # Add NodeSource repository curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs print_success "Node.js $(node --version) and npm $(npm --version) installed" fi # Install Python 3 and pip print_status "Installing Python 3 and pip..." sudo apt install -y python3 python3-pip python3-venv python3-dev print_success "Python $(python3 --version) and pip installed" # Install AWS CLI v2 print_status "Installing AWS CLI v2..." if command_exists aws; then print_warning "AWS CLI is already installed ($(aws --version))" else cd /tmp curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip -q awscliv2.zip sudo ./aws/install # Add to PATH if needed if ! command_exists aws; then echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc export PATH="/usr/local/bin:$PATH" fi cd - > /dev/null print_success "AWS CLI $(aws --version) installed" fi # Install AWS CDK print_status "Installing AWS CDK globally..." if command_exists cdk; then print_warning "AWS CDK is already installed ($(cdk --version))" print_status "Upgrading AWS CDK to latest version..." sudo npm install -g aws-cdk@latest else sudo npm install -g aws-cdk fi print_success "AWS CDK $(cdk --version) installed" # Install TypeScript globally (optional but recommended) print_status "Installing TypeScript globally..." if command_exists tsc; then print_warning "TypeScript is already installed ($(tsc --version))" else sudo npm install -g typescript print_success "TypeScript $(tsc --version) installed" fi # Clean up temporary files print_status "Cleaning up temporary files..." rm -f /tmp/awscliv2.zip sudo rm -rf /tmp/aws print_success "Cleanup completed" reset;clear # Verify installations echo "" echo "==========================================" echo "Installation Verification" echo "==========================================" print_status "Verifying installations..." # Check Node.js if command_exists node; then print_success "Node.js: $(node --version)" else print_error "Node.js installation failed" exit 1 fi # Check npm if command_exists npm; then print_success "npm: $(npm --version)" else print_error "npm installation failed" exit 1 fi # Check Python if command_exists python3; then print_success "Python: $(python3 --version)" else print_error "Python installation failed" exit 1 fi # Check pip if command_exists pip3; then print_success "pip: $(pip3 --version)" else print_error "pip installation failed" exit 1 fi # Check AWS CLI if command_exists aws; then print_success "AWS CLI: $(aws --version)" else print_error "AWS CLI installation failed" exit 1 fi # Check CDK if command_exists cdk; then print_success "AWS CDK: $(cdk --version)" else print_error "AWS CDK installation failed" exit 1 fi # Check TypeScript if command_exists tsc; then print_success "TypeScript: $(tsc --version)" else print_warning "TypeScript not found (optional)" fi echo "" echo "==========================================" echo "Next Steps" echo "==========================================" echo "" print_status "1. Configure AWS credentials:" echo " aws configure" echo "" print_status "2. Create an EC2 Key Pair in AWS Console:" echo " - Go to EC2 → Key Pairs → Create key pair" echo " - Download the .pem file" echo "" print_status "3. Bootstrap CDK (replace with your account ID and region):" echo " cdk bootstrap aws://123456789012/us-east-1" echo "" print_status "4. Create your CDK project:" echo " mkdir my-cdk-project && cd my-cdk-project" echo " cdk init app --language=typescript" echo " # OR" echo " cdk init app --language=python" echo "" print_success "AWS CDK setup completed successfully!" echo "" echo "=========================================="