feat: add targeted lab preparation workflow
This commit is contained in:
+115
-74
@@ -1,8 +1,8 @@
|
||||
# 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.
|
||||
Benvenuto nel Corso Laboratori Cloud. Questa guida ti spiega come usare al meglio il corso di simulazione pratica dei servizi cloud con Docker locale.
|
||||
|
||||
## Cosa è questo corso?
|
||||
## Cosa e 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.
|
||||
|
||||
@@ -13,35 +13,39 @@ Ogni laboratorio ti guida passo-passo nella creazione di infrastrutture locali c
|
||||
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)
|
||||
- **Docker Compose V2** (usa `docker compose`, non `docker-compose`)
|
||||
- **Strumenti di rete**: netcat, curl, iproute2
|
||||
|
||||
### 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
|
||||
```
|
||||
|
||||
```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!
|
||||
```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
|
||||
|
||||
@@ -59,40 +63,64 @@ Il corso ha **5 laboratori progressivi**:
|
||||
|
||||
Ogni laboratorio ha la stessa struttura:
|
||||
|
||||
```
|
||||
```text
|
||||
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
|
||||
|-- README.md # Punto di ingresso del lab
|
||||
|-- 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/
|
||||
`-- 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
|
||||
|
||||
1. Leggi `README.md` del lab
|
||||
2. Segui l'`Ordine Consigliato` indicato nel README
|
||||
3. Esegui i comandi nel tuo terminale
|
||||
4. 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
|
||||
```bash
|
||||
cd labs/lab-01-iam
|
||||
```
|
||||
|
||||
3. **Verifica il completamento:**
|
||||
```bash
|
||||
bash tests/99-final-verification.sh
|
||||
```
|
||||
2. **Leggi prima `README.md` del lab:**
|
||||
- Ti dice in che ordine leggere i tutorial
|
||||
- Ti dice quando avviare `docker compose`
|
||||
- Ti dice se serve anche `--build`
|
||||
|
||||
4. **Se tutto è OK**, passa al laboratorio successivo
|
||||
3. **Leggi il tutorial** (inizia da `01-*.md`):
|
||||
- Segui ogni passo attentamente
|
||||
- Non saltare sezioni
|
||||
- Pratica ogni comando nel tuo terminale
|
||||
|
||||
4. **Avvia i servizi solo quando README o tutorial te lo chiedono:**
|
||||
- In molti lab basta `docker compose up -d`
|
||||
- In alcuni casi puo essere richiesto `docker compose up -d --build`
|
||||
- In `lab-01-iam` il compose serve soprattutto nella parte finale
|
||||
|
||||
5. **Prima di iniziare un nuovo lab, prepara l'ambiente del corso:**
|
||||
|
||||
```bash
|
||||
./scripts/prepare-lab.sh --dry-run
|
||||
./scripts/prepare-lab.sh
|
||||
```
|
||||
|
||||
Questo script pulisce solo le risorse create dai laboratori cloud e aiuta a evitare conflitti di porte tra lab consecutivi.
|
||||
|
||||
6. **Verifica il completamento dalla root del lab:**
|
||||
|
||||
```bash
|
||||
bash tests/99-final-verification.sh
|
||||
```
|
||||
|
||||
7. **Se tutto e OK**, passa al laboratorio successivo
|
||||
|
||||
## Come verificare che stai facendo bene
|
||||
|
||||
@@ -100,12 +128,12 @@ labs/lab-XX-nome/
|
||||
|
||||
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
|
||||
- Configurazioni corrette
|
||||
- Requisiti di sicurezza del lab
|
||||
- Funzionalita dei servizi
|
||||
- Compliance con i requisiti tecnici
|
||||
|
||||
**Esegui sempre questo script alla fine di ogni laboratorio!**
|
||||
**Esegui sempre questo script alla fine di ogni laboratorio, dalla cartella del lab.**
|
||||
|
||||
### Cosa fare se la verifica fallisce
|
||||
|
||||
@@ -113,21 +141,23 @@ Ogni laboratorio ha uno script `99-final-verification.sh` che controlla:
|
||||
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
|
||||
5. Se hai 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
|
||||
- **Processi di servizio non privilegiati**: dove previsto, il processo principale del servizio non deve girare come root
|
||||
- **Isolamento rete**: reti private non esposte sull'host
|
||||
- **Limiti risorse**: ogni container ha limiti CPU/memoria
|
||||
- **Persistenza**: i dati sopravvivono ai riavvii
|
||||
|
||||
**Rispetta sempre questi principi nei tuoi progetti reali!**
|
||||
Nota pratica: una shell aperta con `docker exec` puo mostrarti un utente diverso dal processo principale del servizio. Se il tutorial ti fa controllare l'utente effettivo del servizio, segui sempre il metodo documentato nel lab.
|
||||
|
||||
**Rispetta sempre questi principi nei tuoi progetti reali.**
|
||||
|
||||
## Pulizia tra laboratori
|
||||
|
||||
@@ -135,13 +165,20 @@ Per evitare conflitti tra laboratori:
|
||||
|
||||
```bash
|
||||
# Dalla root del progetto
|
||||
./scripts/prepare-lab.sh --dry-run
|
||||
./scripts/prepare-lab.sh
|
||||
```
|
||||
|
||||
Questo e il comando consigliato tra un lab e l'altro. Agisce solo sulle risorse create dal corso.
|
||||
|
||||
Se invece vuoi una pulizia totale del tuo ambiente Docker locale:
|
||||
|
||||
```bash
|
||||
./scripts/reset-env.sh --dry-run
|
||||
./scripts/reset-env.sh
|
||||
```
|
||||
|
||||
Questo comando:
|
||||
- Ferma tutti i container
|
||||
- Rimuove reti e volumi creati
|
||||
- Pulisce l'ambiente per il prossimo lab
|
||||
Attenzione: `reset-env.sh` agisce su **tutto l'ambiente Docker locale**, non solo sui container del corso.
|
||||
|
||||
## Strumenti utili
|
||||
|
||||
@@ -185,7 +222,7 @@ docker compose ps
|
||||
# Logs di tutti i servizi
|
||||
docker compose logs
|
||||
|
||||
# Ricostruisci e riavvia
|
||||
# Ricostruisci e riavvia (solo se il README del lab lo richiede)
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
@@ -233,24 +270,29 @@ docker image prune
|
||||
# Rimuovi volumi orfani
|
||||
docker volume prune
|
||||
|
||||
# Reset completo ambiente
|
||||
# Pulizia mirata dei laboratori cloud
|
||||
./scripts/prepare-lab.sh --dry-run
|
||||
./scripts/prepare-lab.sh
|
||||
|
||||
# Reset completo ambiente (attenzione: rimuove tutti i volumi Docker)
|
||||
./scripts/reset-env.sh --dry-run
|
||||
./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..."
|
||||
1. **Non copiare-incollare**: scrivi ogni comando a mano
|
||||
2. **Comprendi prima di eseguire**: leggi perche 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
|
||||
- **Documentazione**: ogni lab ha guide complete
|
||||
- **Script di verifica**: ti dicono esattamente cosa e sbagliato
|
||||
- **Troubleshooting**: sezioni dedicate in ogni tutorial
|
||||
- **Reference**: sintassi completa e parametri
|
||||
|
||||
## Prossimi passi dopo il corso
|
||||
|
||||
@@ -261,5 +303,4 @@ Una volta completati tutti i 5 laboratori:
|
||||
- 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
|
||||
**Buon apprendimento!**
|
||||
|
||||
Reference in New Issue
Block a user