From f4c76960a11cd46deffb0748c1389109e443c73a Mon Sep 17 00:00:00 2001 From: Sebastiano Miano Date: Tue, 27 Feb 2024 14:45:54 +0000 Subject: [PATCH] Update readme --- README.md | 113 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 88 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 5c6d1e2..944d77a 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,98 @@ -# Macchina virtuale per il corso di Software Defined Networking @ Politecnico di Milano +# Laboratorio per corso di Software Defined Networking @ Politecnico di Milano +Questo laboratorio puo' essere svolto in due modi diversi: +1. Utilizzando [Vagrant](https://www.vagrantup.com/) ed un sistema di virtualizzazione (es. Virtualbox o VMware) +2. Utilizzando [Docker](https://www.docker.com/) -(work in progress) +## Svolgimento con Vagrant +Vagrant è uno strumento per la creazione e la gestione di macchine virtuali. In questo caso, verrà utilizzato per creare una macchina virtuale con un sistema operativo Ubuntu 20.04 LTS, con tutti i pacchetti necessari per svolgere il laboratorio. +In base al sistema operativo dell'host ed all'architettura del processore, e' necessario eseguire delle istruzioni diverse. -Istruzioni per Windows, Linux e Mac con architettura amd64. Per Mac con architettura arm consultare questa pagina di istruzioni https://github.com/MrVideo/sdn-lab (courtesy of Mario Merlo) +#### Windows +1. Installare [Virtualbox](https://www.virtualbox.org) +2. Installare [Vagrant per Windows](https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#windows) -## Requisiti: -* Virtualbox (https://www.virtualbox.org) -* Vagrant (https://www.vagrantup.com) -* Un client ssh +#### Linux +1. Installare [Virtualbox](https://www.virtualbox.org) +2. Installare [Vagrant per Linux](https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#linux) + ```bash + $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg + $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + $ sudo apt update && sudo apt install vagrant + ``` -## Istruzioni -1. Installare virtualbox e vagrant. +#### MacOS +1. Installare [VMware Fusion](https://www.vmware.com/products/fusion.html) + - È necessario avere un account VMWare Customer Connect per procedere al download. È possibile iscriversi mediante l'indirizzo email del Politecnico o tramite quello personale: la licenza per VMWare Fusion Player è gratuita sia per scopi personali che per gli studenti. +2. Installare [Vagrant per MacOS](https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#macos) + ```bash + $ brew tap hashicorp/tap + $ brew install hashicorp/tap/hashicorp-vagrant + ``` + +### Istruzioni +1. Aprire il provider di virtualizzazione (es. Virtualbox o VMware) e verificare che sia installato correttamente. Tenere la finestra aperta mentre vengono eseguiti gli altri comandi. 2. Copiare i file di configurazione in una cartella vuota. Se si vuole si può usare git. + - Nel caso di git, il comando da eseguire e' il seguente: + ```bash + $ git clone https://github.com/gverticale/sdn-vm-polimi.git + ``` 3. Aprire una finestra del teminale in questa nuova cartella. 4. Istanziare e avviare la macchina con `vagrant up` -5. Per collegarsi alla macchina virtuale `vagrant ssh` + - Una volta avviata, si aprira' una nuova finestra del provider di virtualizzazione, che mostrera' la macchina virtuale in esecuzione. + - Attendere fino a quando la macchina virtuale non e' completamente avviata e tutti i pacchetti non sono stati installati. +5. E' possibile utilizzare direttamente la macchina virtuale tramite il provider di virtualizzazione, oppure collegarsi ad essa tramite `vagrant ssh` + - La macchina virtuale e' gia' configurata con un utente `vagrant` con password `vagrant` 6. Il disco della macchina host è montato nella cartella `/vagrant` 7. Per spegnere la macchina, uscire dalla macchina (`exit`) e fermarla (`vagrant halt`) +8. Per cancellare la macchina, uscire dalla macchina (`exit`) e cancellarla (`vagrant destroy`) + +## Svolgimento con Docker +Docker è una piattaforma per lo sviluppo, la distribuzione e l'esecuzione di applicazioni in container. In questo caso, verrà utilizzato per creare un container con un sistema operativo Ubuntu 20.04 LTS, con tutti i pacchetti necessari per svolgere il laboratorio. +Anche in questo caso, in base al sistema operativo dell'host ed all'architettura del processore, e' necessario eseguire delle istruzioni diverse. + +### Windows +Il supporto a Docker su Windows è limitato. È possibile installare Docker Desktop, ma non è garantito che funzioni correttamente. Si consiglia di utilizzare Vagrant. + +### Linux +1. Installare Docker: + ```bash + # Add Docker's official GPG key: + sudo apt-get update + sudo apt-get install ca-certificates curl + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + sudo chmod a+r /etc/apt/keyrings/docker.asc + + # Add the repository to Apt sources: + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get update + ``` + + ```bash + # Install Docker + sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + ``` + +### MacOS +1. Installare Docker dal [sito web](https://www.docker.com/get-started/). + +### Istruzioni +1. Una volta installato Docker Engine, verificare che questo funzioni correttamente eseguendo il comando: + ```bash + $ sudo docker run hello-world + ``` -## Istruzioni (Apple Silicon) -1. Installare Docker dal [sito web](https://www.docker.com). -2. Installare Visual Studio Code dal [sito web](https://code.visualstudio.com). -3. Installare, su VSCode, il [plugin](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) per Docker. -4. Copiare la cartella `docker-sdn` in una cartella vuota. Se si vuole si può usare git. -5. Aprire una finestra del terminale in questa nuova cartella. -7. Eseguire -``` -docker build -t sdn docker-sdn -``` -8. Spostandosi nella cartella `docker-sdn` tramite il comando `cd docker-sdn`, stanziare e avviare il container con: -``` -docker-compose run --rm sdn -``` -9. In VSCode, dopo aver premuto l'icona nell'angolo in basso a sinistra, selezionare "Attach to Running Container", e selezionare il container con il prefisso `docker-sdn`. +2. Entrare nella cartella del laboratorio. +3. Avviare il container con il comando: + ```bash + $ make connect-docker + ``` + - La prima volta che viene eseguito, questo comando proverà a scaricare l'immagine del Docker per il laboratorio. Questo potrebbe richiedere del tempo. + - Una volta avviato, si aprirà una nuova shell all'interno del container e sara' possibile svolgere il laboratorio. +4. Per aprire altre shell all'interno del container, eseguire, su un altro terminale, il comando: + ```bash + $ make connect-docker + ```