Skip to content

Commit

Permalink
Update instructions and docker-compose file
Browse files Browse the repository at this point in the history
  • Loading branch information
sebymiano committed Feb 28, 2024
1 parent 2f53508 commit babad5a
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 55 deletions.
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# Makefile for starting the docker container
SERVICE_NAME_LAB=sdn

# Detect the operating system
OS := $(shell uname -s)

# Set the docker-compose file based on the OS
ifeq ($(OS),Linux)
DOCKER_COMPOSE_FILE=./docker-sdn/docker-compose-linux.yml
else ifeq ($(OS),Darwin) # Darwin is the system name for MacOS
DOCKER_COMPOSE_FILE=./docker-sdn/docker-compose-mac.yml
endif

start-docker:
(. ./docker-sdn/setup-env.sh && docker compose up -d)

Expand Down
116 changes: 61 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Laboratorio per corso di Software Defined Networking @ Politecnico di Milano
Questo laboratorio puo' essere svolto in due modi diversi:
1. Utilizzando le [VM fornite](#1-svolgimento-con-le-vm-fornite) (**Consigliato**)
2. Utilizzando [Vagrant](#2-svolgimento-con-vagrant) ed un sistema di virtualizzazione (es. Virtualbox o VMware)
3. Utilizzando [Docker](#3-svolgimento-con-docker)
2. Utilizzando [Docker](#2-svolgimento-con-docker)

## 1. Svolgimento con le VM fornite
Sono state fornite delle macchine virtuali con tutti i pacchetti necessari per svolgere il laboratorio. Queste macchine virtuali sono state create per funzionare sia con architetture x86_64 che con architetture ARM64.
Expand Down Expand Up @@ -35,14 +34,12 @@ Per avviare le macchine virtuali, è necessario utilizzare un provider di virtua
### MacOS with Apple M1/M2 CPU (ARM64)
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. Scaricare la macchina virtuale dal [questo](https://polimi365-my.sharepoint.com/:u:/g/personal/10457521_polimi_it/ESOLW-q6wLVPoUenKGT1OyEBvvzd2gT7QtthJDH1qyeegA?e=fh8RUg) link.
2. Scaricare la macchina virtuale dal [questo](https://polimi365-my.sharepoint.com/:u:/g/personal/10457521_polimi_it/EcFxgKNEHa9PoCUc_k7CUtwBCqA1ixcDVzptJFa2B0KB-g?e=A3W43Q) link.
- Il link è accessibile solo agli studenti del Politecnico di Milano, previa autenticazione con le credenziali istituzionali.
- Se si vuole verificare che il file scaricato sia corretto, verificando l'hash direttamente cosi:
```bash
$ if [ "$(sha256sum sdn-labs-arm64.ova | awk '{print $1}')" = "32426af75787c7012297cec081dd0b8ced62aee86af4f5de530bcca414750dce" ]; then echo "SHA matches"; else echo "SHA does not match"; fi
```
3. Aprire il file `.ova` con VMware Fusion e seguire le istruzioni per importare la macchina virtuale.
4. Avviare la macchina virtuale e attendere che sia completamente avviata.
3. Estrarre il file `sdn-labs-arm634.vmwarevm` dall'archivio `.zip` e posizionarlo in una cartella a piacere.
4. Aprire VMware Fusion e selezionare `File` -> `Apri...` e selezionare il file `sdn-labs-arm634.vmwarevm`.
5. Quando la macchina virtuale si avvia, verrà chiesto se la macchina virtuale è stata spostata o copiata. Selezionare `Copiata`.
6. Attendere che sia completamente avviata.
5. Le credenziali di accesso sono:
- Username: `sdn`
- Password: `sdn`
Expand All @@ -56,55 +53,12 @@ Per avviare le macchine virtuali, è necessario utilizzare un provider di virtua
$ make connect-docker
```

## 2. 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.
#### Windows
1. Installare [Virtualbox](https://www.virtualbox.org)
2. Installare [Vagrant per Windows](https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#windows)
#### 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
```
#### 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`
- 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`)
## 3. Svolgimento con Docker
## 2. 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.
Il supporto a Docker su Windows è limitato. È possibile installare Docker Desktop, ma non è garantito che funzioni correttamente. Si consiglia di utilizzare il primo approccio.

### Linux
1. Installare Docker:
Expand All @@ -128,6 +82,11 @@ Il supporto a Docker su Windows è limitato. È possibile installare Docker Desk
# Install Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
2. Nel caso in cui si voglia utilizzare Docker senza `sudo`, aggiungere l'utente al gruppo `docker`:
```bash
sudo usermod -aG docker $USER
newgrp docker
```
### MacOS
1. Installare Docker dal [sito web](https://www.docker.com/get-started/).
Expand All @@ -148,4 +107,51 @@ Il supporto a Docker su Windows è limitato. È possibile installare Docker Desk
4. Per aprire altre shell all'interno del container, eseguire, su un altro terminale, il comando:
```bash
$ make connect-docker
```
```
## Istruzioni alternative
Nel caso in cui non si voglia utilizzare ne' le VM ne' Docker, è possibile utilizzare Vagrant per creare una macchina virtuale con un sistema operativo Ubuntu 20.04 LTS, con tutti i pacchetti necessari per svolgere il laboratorio.
**Nota**: Questa modalità non è stata testata e potrebbe non funzionare correttamente.
### 1(bis). 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.

#### Windows
1. Installare [Virtualbox](https://www.virtualbox.org)
2. Installare [Vagrant per Windows](https://developer.hashicorp.com/vagrant/install?product_intent=vagrant#windows)

#### 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
```

#### 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`
- 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`)
File renamed without changes.
24 changes: 24 additions & 0 deletions docker-sdn/docker-compose-mac.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: "3"
services:
sdn-lab:
container_name: sdn
build:
context: .
dockerfile: ./Dockerfile
image: ghcr.io/gverticale/sdn-vm-polimi:latest
tty: true
privileged: true
environment:
- DISPLAY=${DISPLAY_ENV}
volumes:
- ${X11_VOLUME}
- /lib/modules:/lib/modules
- ./sdn-lab:/root/sdn-labs
ports:
- "6633:6633"
- "6653:6653"
- "6640:6640"
- "8181:8181"
- "8080:8080"
- "8008:8008"

0 comments on commit babad5a

Please sign in to comment.