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) è necessario modificare le prime righe dei relativi script di installazione (ad esempio, asw/environments/shared/scripts/setup-java.sh per JDK), 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 applicazioni Java non distribuite; 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
-
client-server: per l'esecuzione di applicazioni Java distribuite di tipo client-server
-
glassfish: per l'esecuzione di applicazioni Java EE con l'application server GlassFish (basato su Payara 5)
-
docker: per la gestione e l'esecuzione di contenitori Docker
-
docker-swarm: per la gestione e l'esecuzione di un cluster (swarm) di nodi Docker