-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
88 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
``` |