diff --git a/README.md b/README.md index fa6ae2d..8489a09 100644 --- a/README.md +++ b/README.md @@ -54,9 +54,12 @@ Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/ ./scripts/check-env.sh ``` -3. Se tutti i check passano, sei pronto per iniziare il primo laboratorio! +3. Leggi la **Guida per Studenti** per capire come utilizzare il corso: + ```bash + cat STUDENT-GUIDE.md + ``` - Vai in `labs/lab-01-iam/` e segui le istruzioni. +4. Se tutti i check passano, sei pronto per iniziare il primo laboratorio! ## Laboratori @@ -110,6 +113,7 @@ Deploy PostgreSQL in rete privata con persistenza dati. ``` laboratori-cloud/ +├── STUDENT-GUIDE.md # Guida completa per studenti ├── labs/ # Laboratori (1 per modulo cloud) │ ├── lab-01-iam/ # IAM & Sicurezza │ ├── lab-02-network/ # Network & VPC diff --git a/STUDENT-GUIDE.md b/STUDENT-GUIDE.md new file mode 100644 index 0000000..69cc145 --- /dev/null +++ b/STUDENT-GUIDE.md @@ -0,0 +1,254 @@ +# Guida per Studenti - Corso Laboratori Cloud + +Benvenuto nel Corso Laboratori Cloud! Questa guida ti spiega come utilizzare al meglio questo corso di simulazione pratica dei servizi cloud usando Docker locale. + +## Cosa è questo corso? + +Questo corso ti insegna i concetti fondamentali del cloud computing (IAM, Networking, Compute, Storage, Database) attraverso laboratori pratici. Invece di usare account cloud costosi, usiamo Docker sul tuo computer per simulare i servizi AWS/Azure/GCP. + +Ogni laboratorio ti guida passo-passo nella creazione di infrastrutture locali che si comportano come i servizi cloud reali. + +## Prerequisiti + +Prima di iniziare, assicurati di avere: + +- **Docker Engine** >= 24.0 installato e funzionante +- **Docker Compose V2** (usa `docker compose`, NON `docker-compose` deprecato) +- **Strumenti di rete**: netcat, curl, iproute2 (solitamente preinstallati su Linux/macOS) +- **Sistema operativo**: Linux, macOS o Windows con Docker Desktop + +### Verifica dell'ambiente + +1. Apri un terminale +2. Clona la repository: + ```bash + git clone https://gitea.lab.home.lucasacchi.net/lucasacchi/laboratori-cloud + cd laboratori-cloud + ``` +3. Verifica che tutto funzioni: + ```bash + ./scripts/check-env.sh + ``` + +Se tutti i controlli passano, sei pronto! + +## Come seguire il corso + +### 1. Struttura del corso + +Il corso ha **5 laboratori progressivi**: + +- **Lab 01: IAM & Sicurezza** - Utenti, permessi, sicurezza container +- **Lab 02: Network & VPC** - Reti isolate, simulazione VPC/Subnets +- **Lab 03: Compute & EC2** - Limiti risorse, healthchecks, simulazione EC2 +- **Lab 04: Storage & S3** - Volumi, MinIO come S3 locale +- **Lab 05: Database & RDS** - Database persistente, simulazione RDS + +### 2. Come fare un laboratorio + +Ogni laboratorio ha la stessa struttura: + +``` +labs/lab-XX-nome/ +├── tutorial/ # Guida passo-passo (LEGGI PRIMA QUESTO) +├── how-to-guides/ # Procedure specifiche per task particolari +├── reference/ # Documentazione tecnica completa +├── explanation/ # Spiegazione dei paralleli cloud/locale +├── docker-compose.yml # Configurazione infrastruttura +└── tests/ # Script di verifica + └── 99-final-verification.sh +``` + +**Ordine consigliato:** +1. Leggi il **tutorial** dall'inizio alla fine +2. Esegui i comandi nel tuo terminale +3. Quando arrivi alla fine, verifica con lo script finale + +### 3. Workflow tipico per un laboratorio + +1. **Vai nella cartella del lab:** + ```bash + cd labs/lab-01-iam + ``` + +2. **Leggi il tutorial** (inizia da `01-*.md`): + - Segui ogni passo attentamente + - Non saltare sezioni + - Pratica ogni comando nel tuo terminale + +3. **Verifica il completamento:** + ```bash + bash tests/99-final-verification.sh + ``` + +4. **Se tutto è OK**, passa al laboratorio successivo + +## Come verificare che stai facendo bene + +### Script di verifica finale + +Ogni laboratorio ha uno script `99-final-verification.sh` che controlla: + +- ✅ Configurazioni corrette +- ✅ Sicurezza (no root containers, etc.) +- ✅ Funzionalità dei servizi +- ✅ Compliance con i requisiti tecnici + +**Esegui sempre questo script alla fine di ogni laboratorio!** + +### Cosa fare se la verifica fallisce + +1. Leggi il messaggio di errore +2. Controlla l'output per capire cosa non va +3. Riguarda il tutorial per il passo problematico +4. Riprova la configurazione +5. Se ancora problemi, consulta: + - **How-to guides** per procedure specifiche + - **Troubleshooting** nel tutorial + - **Reference** per sintassi tecnica + +## Sicurezza e best practices + +Questo corso segue principi di sicurezza rigorosi: + +- 🔒 **Container non-root**: Mai eseguire container come root +- 🚫 **Isolamento rete**: Reti private non esposte sull'host +- 📊 **Limiti risorse**: Ogni container ha limiti CPU/memoria +- 💾 **Persistenza**: Dati che sopravvivono ai riavvii + +**Rispetta sempre questi principi nei tuoi progetti reali!** + +## Pulizia tra laboratori + +Per evitare conflitti tra laboratori: + +```bash +# Dalla root del progetto +./scripts/reset-env.sh +``` + +Questo comando: +- Ferma tutti i container +- Rimuove reti e volumi creati +- Pulisce l'ambiente per il prossimo lab + +## Strumenti utili + +### Comandi Docker essenziali + +```bash +# Lista container attivi +docker ps + +# Lista tutti i container (anche fermi) +docker ps -a + +# Vedi logs di un container +docker logs + +# Entra in un container (debug) +docker exec -it sh + +# Lista reti +docker network ls + +# Lista volumi +docker volume ls + +# Statistiche risorse +docker stats +``` + +### Comandi Docker Compose + +```bash +# Avvia tutti i servizi +docker compose up -d + +# Ferma tutti i servizi +docker compose down + +# Vedi stato servizi +docker compose ps + +# Logs di tutti i servizi +docker compose logs + +# Ricostruisci e riavvia +docker compose up -d --build +``` + +## Risoluzione problemi comuni + +### "Permission denied" su Docker + +```bash +# Aggiungi utente al gruppo docker +sudo usermod -aG docker $USER +# Fai logout e login, oppure: +newgrp docker +``` + +### "Command not found: docker compose" + +Hai la versione vecchia. Installa Docker Compose V2: +- Su Linux: Docker Engine >= 24.0 include Compose V2 +- Su macOS/Windows: Docker Desktop >= 4.0 + +### Container non si avvia + +```bash +# Controlla logs +docker compose logs + +# Controlla risorse +docker stats + +# Verifica porte in uso +docker ps +``` + +### "No space left on device" + +Docker occupa troppo spazio. Pulisci: + +```bash +# Rimuovi container fermi +docker container prune + +# Rimuovi immagini non usate +docker image prune + +# Rimuovi volumi orfani +docker volume prune + +# Reset completo ambiente +./scripts/reset-env.sh +``` + +## Come imparare al meglio + +1. **Non copiare-incollare**: Scrivi ogni comando a mano +2. **Comprendi prima di eseguire**: Leggi perché fai ogni passo +3. **Sperimenta**: Modifica parametri e vedi cosa succede +4. **Documenta**: Prendi appunti sui comandi importanti +5. **Collega al cloud**: Pensa sempre "questo in AWS sarebbe..." + +## Supporto + +- **Documentazione**: Ogni lab ha guide complete +- **Script di verifica**: Ti dicono esattamente cosa è sbagliato +- **Troubleshooting**: Sezioni dedicate in ogni tutorial +- **Reference**: Sintassi completa e parametri + +## Prossimi passi dopo il corso + +Una volta completati tutti i 5 laboratori: + +- Avrai una comprensione pratica del cloud computing +- Saprai configurare infrastrutture sicure e scalabili +- Potrai applicare questi concetti nei tuoi progetti reali +- Sarai pronto per certificazioni cloud (AWS, Azure, GCP) + +**Buon apprendimento! 🚀** +student-guide.md \ No newline at end of file