Hextra theme (#1)
* Adapt theme * Update Contents to match with new theme * chore: few updates * adapt HomePage * Add icons and french version * fix fr homepage * Fix Netlab view * Fix Netlab articles * devpod post * French version of DevPod * my_first_lab
BIN
content/netlab/first_lab/Graph_view.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
1
content/netlab/first_lab/VXLAN.svg
Normal file
|
After Width: | Height: | Size: 30 KiB |
217
content/netlab/first_lab/_index.fr.md
Normal file
@@ -0,0 +1,217 @@
|
||||
---
|
||||
title: "Mon Premier Lab"
|
||||
date: 2025-02-14T12:00:00+02:00
|
||||
weight: 1
|
||||
cascade:
|
||||
type: docs
|
||||
---
|
||||
|
||||
## Introduction 📚
|
||||
|
||||
Dans cet article, nous allons explorer comment installer notre tout premier netlab Containerlab en utilisant **DevPod**.
|
||||
Nous nous concentrerons sur l'utilisation d'un fournisseur cloud, en l'occurrence **AWS**, pour héberger notre projet.
|
||||
Pourquoi le **Cloud** ? Parce que les labs réseau peuvent consommer énormément de ressources, et nous avons besoin de pouvoir les déployer, les arrêter et les détruire rapidement, tant pour la performance que pour l'efficacité financière. 💡💰
|
||||
|
||||
Nous y parviendrons en combinant :
|
||||
|
||||
- **DevPod**
|
||||
- **DevContainer**
|
||||
- **Containerlab**
|
||||
|
||||
De plus, nous utiliserons une topologie simple que vous pouvez retrouver sur mon [dépôt GitHub](https://github.com/darnodo/VXLAN-EVPN). Notre objectif principal est de déployer ce lab sur AWS avec DevPod.
|
||||
Allons-y, c'est parti ! 🚀😊
|
||||
|
||||
## Prérequis 🔧
|
||||
|
||||
Avant de commencer, quelques étapes importantes sont à réaliser :
|
||||
|
||||
1. **Autorisation de l'environnement AWS** :
|
||||
Assurez-vous que DevPod est autorisé à accéder à votre environnement AWS. Pour un guide détaillé sur la configuration de DevPod avec AWS, consultez mon article sur ce [sujet](/documentation/devpod). 🔑
|
||||
|
||||
2. **Topologie Containerlab** :
|
||||
Nous avons besoin d'un fichier de topologie compréhensible par Containerlab. Dans notre cas, nous créons une topologie VXLAN simple. 🗺️
|
||||
|
||||
## Topologie Containerlab 🔄
|
||||
|
||||
Notre lab simulera une topologie VXLAN comprenant :
|
||||
|
||||
- **1 switch Spine**
|
||||
- **2 switches Leaf**
|
||||
- **2 nœuds Host**
|
||||
|
||||
Le diagramme suivant illustre la topologie VXLAN :
|
||||
|
||||

|
||||
|
||||
Voici le fichier de topologie Containerlab (`lab_vxlan.yml`) utilisé pour cette configuration :
|
||||
|
||||
```yaml
|
||||
name: vxlan-evpn-irb
|
||||
topology:
|
||||
nodes:
|
||||
spine1:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.101
|
||||
leaf1:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.11
|
||||
leaf2:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.12
|
||||
host1:
|
||||
kind: linux
|
||||
image: alpine:latest
|
||||
binds:
|
||||
- hosts/h1_interfaces:/etc/network/interfaces
|
||||
mgmt-ipv4: 172.20.20.21
|
||||
host2:
|
||||
kind: linux
|
||||
image: alpine:latest
|
||||
binds:
|
||||
- hosts/h2_interfaces:/etc/network/interfaces
|
||||
mgmt-ipv4: 172.20.20.22
|
||||
links:
|
||||
- endpoints: ["spine1:eth1", "leaf1:eth1"]
|
||||
- endpoints: ["spine1:eth2", "leaf2:eth1"]
|
||||
- endpoints: ["leaf1:eth2", "host1:eth1"]
|
||||
- endpoints: ["leaf2:eth2", "host2:eth1"]
|
||||
```
|
||||
|
||||
### Décryptage de la Topologie 🧐
|
||||
|
||||
1. **Nom et Structure** :
|
||||
- `name: vxlan-evpn-irb` – C'est le nom du lab.
|
||||
- La topologie se divise en **nodes** (périphériques) et **links** (connexions entre les périphériques).
|
||||
|
||||
2. **Nodes** :
|
||||
- **Couche Spine** :
|
||||
- `spine1` : Un switch Arista cEOS containerisé utilisant l'image version `4.32.0.1F`.
|
||||
- **IP de gestion** : `172.20.20.101`
|
||||
- **Couche Leaf** :
|
||||
- `leaf1` et `leaf2` : Des switches Arista cEOS utilisant la même version d'image.
|
||||
- **IPs de gestion** : `172.20.20.11` et `172.20.20.12`
|
||||
- **Couche Host** :
|
||||
- `host1` et `host2` : Des conteneurs Linux exécutant Alpine Linux.
|
||||
- Ils incluent des configurations personnalisées pour les interfaces réseau montées depuis l'hôte.
|
||||
- **IPs de gestion** : `172.20.20.21` et `172.20.20.22`
|
||||
|
||||
3. **Links** :
|
||||
- **De Spine à Leaf** :
|
||||
- `spine1:eth1` ↔ `leaf1:eth1`
|
||||
- `spine1:eth2` ↔ `leaf2:eth1`
|
||||
- **De Leaf à Host** :
|
||||
- `leaf1:eth2` ↔ `host1:eth1`
|
||||
- `leaf2:eth2` ↔ `host2:eth1`
|
||||
|
||||
Cette topologie représente une architecture spine-leaf typique, courante dans les datacenters pour permettre une connectivité en couche 2 et en couche 3 avec des configurations VXLAN EVPN. 🔗💻
|
||||
|
||||
## Déployer le Lab 🛠️
|
||||
|
||||
Nous allons déployer le lab avec **DevPod** de deux manières :
|
||||
|
||||
### 1. En Utilisant le Dépôt 📥
|
||||
|
||||
1. **Valider la configuration du fournisseur AWS** :
|
||||
Assurez-vous que votre fournisseur AWS est correctement configuré. Plus de détails [ici](/documentation/devpod). ✅
|
||||
|
||||
2. **Créer un Workspace** :
|
||||
- Rendez-vous dans l'onglet **Workspace** et cliquez sur **Create Workspace**.
|
||||
- Indiquez la **source du Workspace** : utilisez le [dépôt GitHub](https://github.com/darnodo/VXLAN-EVPN).
|
||||
- Sélectionnez **AWS** comme fournisseur.
|
||||
- Choisissez votre IDE par défaut.
|
||||
- Enfin, cliquez sur **Create Workspace**.
|
||||
|
||||

|
||||
|
||||
### 2. En Utilisant un Dossier Local 🗂️
|
||||
|
||||
Si vous préférez utiliser votre dépôt local :
|
||||
|
||||
- La seule différence se trouve dans la **source du Workspace**.
|
||||
- Il vous suffit de le pointer vers votre dépôt local.
|
||||
|
||||

|
||||
|
||||
## Démarrer le Lab 🎬
|
||||
|
||||
> [!WARNING] Images cEOS
|
||||
> Le lab utilise l'**image cEOS v4.32.0.1F**.
|
||||
> Pour télécharger cette image, rendez-vous sur la [page de téléchargement Arista](https://www.arista.com/en/support/software-download). ⚠️
|
||||
|
||||
1. **Importer l'image cEOS** :
|
||||
Enregistrez l'image cEOS dans votre dossier `network_images` en la glissant-déposant dans VSCode.
|
||||
Importez l'image en utilisant la commande suivante :
|
||||
|
||||
```bash
|
||||
docker import network_images/cEOS64-lab-4.32.0.1F.tar.xz ceos:4.32.0.1F
|
||||
```
|
||||
|
||||
2. **Déployer le Lab** :
|
||||
Déployez le lab en utilisant Containerlab :
|
||||
|
||||
```bash
|
||||
sudo containerlab deploy -t lab_vxlan.yml
|
||||
```
|
||||
|
||||
Suivez les instructions du CLI pour configurer vos périphériques. Pour des étapes de configuration détaillées, consultez [ce guide](https://github.com/darnodo/VXLAN-EVPN/tree/main/documentation/eos_configuration). 🔧🖥️
|
||||
|
||||
3. **Visualiser l'Architecture** :
|
||||
Vérifiez la topologie déployée grâce à la vue graphique de Containerlab :
|
||||
|
||||
```bash
|
||||
containerlab graph -t lab_vxlan.yml
|
||||
```
|
||||
|
||||
Les ports (par exemple, le port 50080 mentionné dans le `devcontainer.json`) sont redirigés. Accédez à la vue graphique via [localhost](http://localhost:50080).
|
||||
|
||||

|
||||
|
||||
## Utiliser EdgeShark 🦈
|
||||
|
||||
EdgeShark est un outil web qui permet de capturer des paquets depuis votre environnement de lab. Il redirige les captures du lab vers Wireshark exécuté localement. 📡🔍
|
||||
|
||||
Pour plus d'informations, consultez le [guide de démarrage d'EdgeShark](https://edgeshark.siemens.io/#/getting-started?id=optional-capture-plugin).
|
||||
|
||||
### Configuration d'EdgeShark dans le DevContainer 🐳
|
||||
|
||||
Dans la configuration du **DevContainer**, la commande `postCreateCommand` suivante a été ajoutée :
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt/edgeshark && sudo curl -sL https://github.com/siemens/edgeshark/raw/main/deployments/wget/docker-compose.yaml -o /opt/edgeshark/docker-compose.yaml
|
||||
```
|
||||
|
||||
Cette commande télécharge un fichier Docker Compose pour faciliter l'utilisation d'EdgeShark. 🚀
|
||||
|
||||
### Lancer EdgeShark ⚡
|
||||
|
||||
Pour démarrer EdgeShark, exécutez :
|
||||
|
||||
```bash
|
||||
cd /opt/edgeshark
|
||||
DOCKER_DEFAULT_PLATFORM= docker compose up -d
|
||||
```
|
||||
|
||||
Accédez à EdgeShark via [localhost:5001](http://localhost:5001).
|
||||
|
||||
- **Vue d'EdgeShark** :
|
||||

|
||||
|
||||
- **Intégration avec Wireshark** :
|
||||
En cliquant sur l'icône Wireshark dans EdgeShark, vous pouvez lancer Wireshark localement.
|
||||

|
||||

|
||||
|
||||
## Conclusion 🎉
|
||||
|
||||
Dans cet article, nous avons parcouru les étapes pour déployer un lab VXLAN EVPN en utilisant Containerlab, DevPod et AWS. Nous avons abordé les points clés suivants :
|
||||
|
||||
- **Mise en place des prérequis** pour AWS et Containerlab. 🔑
|
||||
- **Création d'un fichier de topologie détaillé** pour une architecture spine-leaf. 🗺️
|
||||
- **Déploiement du lab** en utilisant à la fois un dépôt GitHub et un dossier local. 📥🗂️
|
||||
- **Démarrage du lab** avec Docker et Containerlab. 🚀🐳
|
||||
- **Utilisation d'EdgeShark** pour capturer des paquets et intégrer Wireshark pour une analyse approfondie. 🦈🔍
|
||||
|
||||
En suivant ces étapes, vous pourrez déployer et gérer facilement un environnement de lab réseau évolutif dans le cloud. Bon networking et profitez bien de vos aventures en lab ! 😄🎊
|
||||
214
content/netlab/first_lab/_index.md
Normal file
@@ -0,0 +1,214 @@
|
||||
---
|
||||
title: "My First Lab"
|
||||
date: 2025-02-14T12:00:00+02:00
|
||||
weight: 1
|
||||
cascade:
|
||||
type: docs
|
||||
---
|
||||
|
||||
## Introduction 📚
|
||||
|
||||
In this article, we’ll explore how to install our very first Containerlab netlab using **DevPod**. We'll focus on leveraging a cloud provider—specifically **AWS**—to host our project. Why **Cloud**? Because network labs can consume a huge amount of resources, and we need the ability to deploy, stop, and destroy them quickly for both performance and financial efficiency. 💡💰
|
||||
|
||||
We'll achieve this using a combination of:
|
||||
|
||||
- **DevPod**
|
||||
- **DevContainer**
|
||||
- **Containerlab**
|
||||
|
||||
Additionally, we will use a small topology, which you can find on my [GitHub repository](https://github.com/darnodo/VXLAN-EVPN). Our main objective is to deploy this lab on AWS using DevPod. Let's dive in and get started! 🚀😊
|
||||
|
||||
## Prerequisites 🔧
|
||||
|
||||
Before we get started, there are a couple of important steps to complete:
|
||||
|
||||
1. **AWS Environment Authorization**:
|
||||
Ensure that DevPod is authorized to access your AWS environment. For a detailed guide on configuring DevPod with AWS, please refer to my post on this [topic](/documentation/devpod). 🔑
|
||||
|
||||
2. **Containerlab Topology**:
|
||||
We need a topology file that Containerlab can understand. In our case, we're building a simple VXLAN topology. 🗺️
|
||||
|
||||
## Containerlab Topology 🔄
|
||||
|
||||
Our lab will simulate a VXLAN topology with:
|
||||
|
||||
- **1 Spine switch**
|
||||
- **2 Leaf switches**
|
||||
- **2 Host nodes**
|
||||
|
||||
The following diagram illustrates the VXLAN topology:
|
||||
|
||||

|
||||
|
||||
Below is the Containerlab topology file (`lab_vxlan.yml`) used for this setup:
|
||||
|
||||
```yaml
|
||||
name: vxlan-evpn-irb
|
||||
topology:
|
||||
nodes:
|
||||
spine1:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.101
|
||||
leaf1:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.11
|
||||
leaf2:
|
||||
kind: ceos
|
||||
image: ceos:4.32.0.1F
|
||||
mgmt-ipv4: 172.20.20.12
|
||||
host1:
|
||||
kind: linux
|
||||
image: alpine:latest
|
||||
binds:
|
||||
- hosts/h1_interfaces:/etc/network/interfaces
|
||||
mgmt-ipv4: 172.20.20.21
|
||||
host2:
|
||||
kind: linux
|
||||
image: alpine:latest
|
||||
binds:
|
||||
- hosts/h2_interfaces:/etc/network/interfaces
|
||||
mgmt-ipv4: 172.20.20.22
|
||||
links:
|
||||
- endpoints: ["spine1:eth1", "leaf1:eth1"]
|
||||
- endpoints: ["spine1:eth2", "leaf2:eth1"]
|
||||
- endpoints: ["leaf1:eth2", "host1:eth1"]
|
||||
- endpoints: ["leaf2:eth2", "host2:eth1"]
|
||||
```
|
||||
|
||||
### Breaking Down the Topology 🧐
|
||||
|
||||
1. **Name and Structure**:
|
||||
- `name: vxlan-evpn-irb` – This is the lab's name.
|
||||
- The topology is divided into **nodes** (devices) and **links** (connections between devices).
|
||||
|
||||
2. **Nodes**:
|
||||
- **Spine Layer**:
|
||||
- `spine1`: A containerized Arista cEOS switch using image version `4.32.0.1F`.
|
||||
- **Management IP**: `172.20.20.101`
|
||||
- **Leaf Layer**:
|
||||
- `leaf1` and `leaf2`: Arista cEOS switches with the same image version.
|
||||
- **Management IPs**: `172.20.20.11` and `172.20.20.12`
|
||||
- **Host Layer**:
|
||||
- `host1` and `host2`: Linux containers running Alpine Linux.
|
||||
- They include custom network interface configurations mounted from the host.
|
||||
- **Management IPs**: `172.20.20.21` and `172.20.20.22`
|
||||
|
||||
3. **Links**:
|
||||
- **Spine to Leaf**:
|
||||
- `spine1:eth1` ↔ `leaf1:eth1`
|
||||
- `spine1:eth2` ↔ `leaf2:eth1`
|
||||
- **Leaf to Host**:
|
||||
- `leaf1:eth2` ↔ `host1:eth1`
|
||||
- `leaf2:eth2` ↔ `host2:eth1`
|
||||
|
||||
This topology represents a typical spine-leaf architecture, common in data center networks to enable both Layer 2 and Layer 3 connectivity with VXLAN EVPN configurations. 🔗💻
|
||||
|
||||
## Deploy the Lab 🛠️
|
||||
|
||||
We will deploy the lab using **DevPod** in two ways:
|
||||
|
||||
### 1. Using the Repository 📥
|
||||
|
||||
1. **Validate AWS Provider Configuration**:
|
||||
Ensure that your AWS provider is correctly configured. More details can be found [here](/documentation/devpod). ✅
|
||||
|
||||
2. **Create a Workspace**:
|
||||
- Navigate to the **Workspace** tab and click on **Create Workspace**.
|
||||
- Enter the **Workspace source**: use the [GitHub repository](https://github.com/darnodo/VXLAN-EVPN).
|
||||
- Select **AWS** as the provider.
|
||||
- Choose your default IDE.
|
||||
- Finally, click on **Create Workspace**.
|
||||
|
||||

|
||||
|
||||
### 2. Using a Local Folder 🗂️
|
||||
|
||||
If you prefer to use your local repository:
|
||||
|
||||
- The only difference is in the **Workspace source**.
|
||||
- Simply point it to your local repository.
|
||||
|
||||

|
||||
|
||||
## Starting the Lab 🎬
|
||||
|
||||
> [!WARNING] cEOS Images
|
||||
> The lab uses **cEOS image v4.32.0.1F**.
|
||||
> To download this image, visit the [Arista download webpage](https://www.arista.com/en/support/software-download). ⚠️
|
||||
|
||||
1. **Import the cEOS Image**:
|
||||
Save the cEOS image in your `network_images` folder by dragging and dropping it into VSCode.
|
||||
Import the image using the following command:
|
||||
|
||||
```bash
|
||||
docker import network_images/cEOS64-lab-4.32.0.1F.tar.xz ceos:4.32.0.1F
|
||||
```
|
||||
|
||||
2. **Deploy the Lab**:
|
||||
Deploy the lab using Containerlab:
|
||||
|
||||
```bash
|
||||
sudo containerlab deploy -t lab_vxlan.yml
|
||||
```
|
||||
|
||||
Follow the CLI prompts to configure your devices. For detailed configuration steps, refer to [this guide](https://github.com/darnodo/VXLAN-EVPN/tree/main/documentation/eos_configuration). 🔧🖥️
|
||||
|
||||
3. **Visualize the Architecture**:
|
||||
Validate the deployed topology using Containerlab’s graph view:
|
||||
|
||||
```bash
|
||||
containerlab graph -t lab_vxlan.yml
|
||||
```
|
||||
|
||||
Ports (e.g., port 50080 as mentioned in the `devcontainer.json`) are forwarded. Access the graph view via [localhost](http://localhost:50080).
|
||||
|
||||

|
||||
|
||||
## Using EdgeShark 🦈
|
||||
|
||||
EdgeShark is a web UI tool that helps capture packets from your lab environment. It tunnels captures from the lab to Wireshark running locally. 📡🔍
|
||||
|
||||
For more details, check out [EdgeShark’s Getting Started Guide](https://edgeshark.siemens.io/#/getting-started?id=optional-capture-plugin).
|
||||
|
||||
### EdgeShark Setup in the DevContainer 🐳
|
||||
|
||||
In the **DevContainer** configuration, the following `postCreateCommand` has been added:
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt/edgeshark && sudo curl -sL https://github.com/siemens/edgeshark/raw/main/deployments/wget/docker-compose.yaml -o /opt/edgeshark/docker-compose.yaml
|
||||
```
|
||||
|
||||
This command downloads a Docker Compose file to facilitate the use of EdgeShark. 🚀
|
||||
|
||||
### Running EdgeShark ⚡
|
||||
|
||||
To start EdgeShark, execute:
|
||||
|
||||
```bash
|
||||
cd /opt/edgeshark
|
||||
DOCKER_DEFAULT_PLATFORM= docker compose up -d
|
||||
```
|
||||
|
||||
Access EdgeShark via [localhost:5001](http://localhost:5001).
|
||||
|
||||
- **EdgeShark View**:
|
||||

|
||||
|
||||
- **Wireshark Integration**:
|
||||
Using the Wireshark icon in EdgeShark, you can launch Wireshark locally.
|
||||

|
||||

|
||||
|
||||
## Conclusion 🎉
|
||||
|
||||
In this article, we walked through the steps to deploy a VXLAN EVPN lab using Containerlab, DevPod, and AWS. We covered the following key points:
|
||||
|
||||
- **Setting up prerequisites** for AWS and Containerlab. 🔑
|
||||
- **Creating a detailed topology** file for a spine-leaf network. 🗺️
|
||||
- **Deploying the lab** using both repository and local methods. 📥🗂️
|
||||
- **Starting the lab** with Docker and Containerlab. 🚀🐳
|
||||
- **Using EdgeShark** to capture packets and integrate with Wireshark for detailed analysis. 🦈🔍
|
||||
|
||||
By following these steps, you can easily deploy and manage a scalable network lab environment in the cloud. Happy networking and enjoy your lab adventures! 😄🎊
|
||||
BIN
content/netlab/first_lab/devpod_configuration.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
content/netlab/first_lab/devpod_configuration_local.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
content/netlab/first_lab/edge_wireshark.png
Normal file
|
After Width: | Height: | Size: 252 KiB |
BIN
content/netlab/first_lab/edgeshark.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
content/netlab/first_lab/edgeshark_interface.png
Normal file
|
After Width: | Height: | Size: 24 KiB |