265 lines
6.7 KiB
Markdown
265 lines
6.7 KiB
Markdown
# 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:
|
|
|
|
- **VM Linux Debian** (es. Debian 13) con Docker Engine >= 24.0 installato
|
|
- **Docker Compose V2** (usa `docker compose`, NON `docker-compose` deprecato)
|
|
- **Strumenti di rete**: netcat, curl, iproute2 (solitamente preinstallati)
|
|
|
|
### Installazione VM e Docker
|
|
|
|
1. **Installa una VM con Debian 13** (o versione recente)
|
|
2. **Installa Docker nella VM:**
|
|
```bash
|
|
wget -O install-docker.sh https://get.docker.com/
|
|
chmod +x ./install-docker.sh
|
|
./install-docker.sh
|
|
sudo usermod -aG docker $USER
|
|
# Fai logout e login per applicare i cambiamenti
|
|
```
|
|
|
|
### Verifica dell'ambiente
|
|
|
|
1. Apri un terminale nella tua VM Debian
|
|
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 <nome-container>
|
|
|
|
# Entra in un container (debug)
|
|
docker exec -it <nome-container> 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! 🚀**</content>
|
|
<parameter name="filePath">student-guide.md |