Questa sezione del repository contiene il codice (infrastructure-as-code) di alcuni ambienti di esecuzione distribuiti virtuali. Ogni sottosezione (sottocartella) è relativa a un diverso ambiente di esecuzione.
Attualmente non sono presenti tutti gli ambienti. Verranno aggiunti a questo repository durante lo svolgimento del corso.
Questi ambienti di esecuzione possono essere utilizzati per eseguire i progetti delle applicazioni distribuite definiti nella cartella projects/ del repository.
Per usare delle versioni più recenti del software di sviluppo (come JDK e Gradle) potrebbe essere necessario modificare le prime righe dei relativi script di installazione (ad esempio, asw/shared/scripts/setup-gradle.sh per Gradle), indicando il numero della versione da utilizzare.
Ogni ambiente di esecuzione è composto da uno o più macchine virtuali, collegate in una rete privata.
Ogni ambiente è rappresentato da una diversa cartella di questa sezione del repository. Si veda il file README.md di una cartella per la descrizione del relativo ambiente.
Gli ambienti vengono creati con Vagrant, e possono essere tutti gestiti allo stesso modo.
Per gestire un ambiente bisogna:
-
usare una shell (per esempio, Git) del proprio PC
-
posizionarsi nella cartella dell'ambiente di interesse (ad esempio, asw/environments/developer)
-
per avviare o creare l'ambiente di esecuzione, usare il comando
vagrant up
-
per collegarsi con SSH a una macchina virtuale VM dell'ambiente, usare il comando
vagrant ssh VM
E' anche possibile:
-
arrestare l'ambiente di esecuzione, con il comando
vagrant halt
-
distruggere l'ambiente di esecuzione, con il comando
vagrant destroy -f
-
developer: per la compilazione e l'assemblaggio (build) dei progetti definiti nella cartella projects/ del repository, nonché per l'esecuzione di semplici applicazioni Java; i progetti (in questo e, anche negli altri ambienti) potranno essere trovati nella cartella /home/asw/projects/ oppure nella cartella projects/ dell'utente di default
-
workstation: un ambiente alternativo a developer per la compilazione e l'assemblaggio (build) dei progetti e per la loro esecuzione; rispetto a developer ha una configurazione più potente in termini di memoria e processore (dunque richiede maggiori risorse nel computer host), per consentire anche l'esecuzione concorrente di molteplici applicazioni; oltre al software di sviluppo per Java, ha anche Docker e Docker Compose
-
kube-cluster: un ambiente costituito da un cluster di nodi Kubernetes (kube-1, kube-2 e kube-3) più un nodo per la compilazione dei progetti e per la costruzione delle immagini dei container Docker; richiede una quantità notevole di risorse nel computer host;
sono raccomandati una CPU con almeno 4 core e 8 thread e una memoria RAM di almeno 16 GB