7.5 KiB
Phase 1: Setup & Git Foundation - Research
Researched: 2026-03-24 Status: Ready for planning
Domain Analysis
Context: Educational Cloud Lab Infrastructure
This phase establishes the foundation for a 5-lab course that simulates cloud services (IAM, Network, Compute, Storage, Database) using local Docker infrastructure. The project follows the Diátaxis Framework for documentation and uses Test-Driven Infrastructure (TDI) methodology.
Target Audience
Students who have seen Azure superficially but lack practical experience. They need:
- Clear, step-by-step instructions
- Verification that their environment is correctly set up
- Understanding of how local Docker maps to cloud services
Technical Research
1. Git Workflow & Conventional Commits
Standard: Conventional Commits Specification
Why: Provides clear, atomic commit history that guides students by example.
Key commit types for this project:
feat:- New features (labs, components, infrastructure)test:- Test scripts and validationdocs:- Documentation (Tutorial, How-to, Reference, Explanation)chore:- Setup, configuration, toolingfix:- Bug fixes
Implementation approach:
- Each lab developed on isolated branch (
lab-01-iam,lab-02-network, etc.) - Merge to main only when complete and tested
- Commit messages follow pattern:
<type>: <description>
2. Docker Environment Requirements
Required versions:
- Docker Engine >= 24.0
- Docker Compose V2 (integrated in
docker composecommand) - Network utilities:
netcat,curl,iproute2
Verification approach:
- Script checks Docker daemon running
- Script verifies Docker Compose V2 available
- Script checks network utilities installed
- Script reports system resources (RAM, CPU)
3. Repository Structure
Required directories:
laboratori-cloud/
├── labs/ # Individual lab directories
│ ├── lab-01-iam/
│ ├── lab-02-network/
│ ├── lab-03-compute/
│ ├── lab-04-storage/
│ └── lab-05-database/
├── how-to-guides/ # Procedure-specific guides
├── reference/ # Technical specifications
└── README.md # Main project documentation
Rationale: Clear separation between learning materials (labs), reusable procedures (how-to), and technical specs (reference).
4. Environment Setup Scripts
Script 1: Environment Check (scripts/check-env.sh)
- Verifies Docker Engine version
- Verifies Docker Compose V2 availability
- Checks for required network utilities
- Reports available system resources
- Exits with clear error messages if requirements not met
Script 2: Environment Reset (scripts/reset-env.sh)
- Stops all running Docker containers
- Removes all Docker networks
- Removes all Docker volumes (with confirmation)
- Provides clean slate for next lab
Script 3: Docker Compose Validation (scripts/validate-compose.sh)
- Runs
docker compose configon specified compose file - Validates YAML syntax
- Reports configuration errors before deployment
5. README Structure
Required sections:
- Project overview (what and why)
- Prerequisites (Docker, utilities)
- Quick start (clone, check environment)
- Lab overview (5 labs briefly described)
- Git workflow brief
- Troubleshooting pointers
Tone: Direct, simple, technically accurate (per PRD requirements)
Validation Architecture
Testing Approach for Phase 1
Since this phase sets up infrastructure and tooling, validation focuses on:
-
Script Validation: Each script must:
- Execute without errors on a properly configured system
- Provide clear error messages when requirements aren't met
- Be idempotent where applicable (reset-env.sh)
- Exit with appropriate status codes
-
Structure Validation:
- All required directories exist
- README.md is accessible and complete
- Scripts are executable (
chmod +x)
-
Documentation Validation:
- README accurately describes setup process
- Setup instructions can be followed by a new student
- Prerequisites are clearly stated
"Done" Criteria
Success Criterion 1: Studente può clonare la repository e trovare istruzioni chiare per configurare Docker Engine >= 24.0 e Compose V2
- Validation: README contains clear Docker installation/verification instructions
- Test: New user can clone repo and follow instructions successfully
Success Criterion 2: Studente può eseguire script di verifica ambiente che controlla Docker, utility di rete, e risorse minime
- Validation:
scripts/check-env.shexists and runs successfully - Test: Script reports all required components correctly
Success Criterion 3: Studente può eseguire comando di reset completo ambiente (cleanup volumi, reti)
- Validation:
scripts/reset-env.shexists and cleans all Docker artifacts - Test: After running,
docker psshows no containers,docker network lsshows only default networks
Success Criterion 4: Ogni file docker-compose.yml può essere validato con docker-compose config prima dell'uso
- Validation:
scripts/validate-compose.shexists and validates compose files - Test: Script catches YAML errors and configuration issues
Success Criterion 5: Repository ha struttura chiara con cartelle labs/, how-to-guides/, reference/
- Validation: All directories exist with appropriate placeholder files
- Test: Directory structure matches planned layout
Specific Ideas
Script Headers (for consistency)
All scripts should include:
#!/bin/bash
# Laboratori Cloud - [Script Purpose]
# Part of: "Corso Soluzioni Cloud"
#
# Description: [What this script does]
# Usage: [command] [options]
README Template
# Laboratori Cloud - Corso Soluzioni Cloud
Simulazione pratica di servizi cloud usando Docker locale.
## Prerequisiti
- Docker Engine >= 24.0
- Docker Compose V2
- Utility: netcat, curl, iproute2
## Quick Start
1. Clona questa repository
2. Esegui `./scripts/check-env.sh` per verificare l'ambiente
3. Segui i laboratori in ordine
## Laboratori
1. **IAM & Sicurezza** - Utenti Linux, permessi Docker
2. **Network & VPC** - Reti isolate, simulazione VPC
3. **Compute & EC2** - Container con limiti risorse
4. **Storage & S3** - Volumes Docker e MinIO
5. **Database & RDS** - PostgreSQL in rete privata
Conventional Commits Examples
feat(setup): add repository structure and initial README
test(setup): add environment check script
docs(setup): add Docker installation instructions
chore(setup): make scripts executable
feat(setup): add environment reset script
Deferred Ideas
None — This phase establishes the foundation. All setup elements are required before labs can begin.
Implementation Notes
Safety First Considerations
reset-env.shshould require confirmation before destructive operations- Scripts should not run as root unless absolutely necessary
- Validation scripts should check for potential conflicts (port conflicts, existing containers)
Little Often Approach
- Create one script at a time
- Validate each script before moving to next
- Commit after each working script
Double Check Verification
- After setup, run
check-env.shto verify everything works - Test
reset-env.shon a clean system to ensure it doesn't break anything - Validate README instructions by following them literally
Research complete for Phase 1: Setup & Git Foundation