Files
projet-vxlan-automation/documentation/INSTALLATION.md
darnodo 7bcd935e69 chore(cleaning) : Remove useless information on README
- Adapt devcontainer to used dood instead of dind
- Re-organize template
2025-03-30 14:18:59 +02:00

4.8 KiB
Executable File

Installation Guide

Table of Contents

Installing ContainerLab

ContainerLab can be installed using the installation script that detects the operating system type and installs the appropriate package:

# download and install the latest version (may require sudo)
bash -c "$(curl -sL https://get.containerlab.dev)"

# with wget
bash -c "$(wget -qO - https://get.containerlab.dev)"

Installing Docker

This is the containerization engine used by ContainerLab.

# Update and install dependencies
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# To be able to execute docker with the current user
sudo usermod -aG docker $USER

# Create management network 
docker network create \
  --driver bridge \
  --subnet=172.20.20.0/24 \
  management

Images installation

Arista cEOS

To download and install the arista cEOS image, you need to be registered to arista.com.
Once you created an account, please logged in and down the cEOS docker images.

To add this new image to docker, please use the docker CLI command :

docker import cEOS64-lab-4.33.2F.tar.xz ceos:4.33.2F

Install Netbox and plugins

For this project, we need to install specific plugin :
- Netbox Topology Views

git clone -b release https://github.com/netbox-community/netbox-docker.git netbox
cd netbox
touch plugin_requirements.txt Dockerfile-Plugins docker-compose.override.yml
cat <<EOF > plugin_requirements.txt
netbox_topology_views
EOF

Create the Dockerfile used to build the custom Image

cat << EOF > Dockerfile-Plugins
FROM netboxcommunity/netbox:v4.2

COPY ./plugin_requirements.txt /opt/netbox/
RUN /usr/local/bin/uv pip install -r /opt/netbox/plugin_requirements.txt

COPY configuration/configuration.py /etc/netbox/config/configuration.py
COPY configuration/plugins.py /etc/netbox/config/plugins.py
RUN SECRET_KEY="dummydummydummydummydummydummydummydummydummydummy" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input
EOF

Tip

This SECRET_KEY is only used during the installation. There's no need to change it.

Create the docker-compose.override.yml

cat <<EOF > docker-compose.override.yml
services:
  netbox:
    image: netbox:v4.2
    pull_policy: never
    ports:
      - 8000:8000
      - 8080:8080
      - 8081:8081
    build:
      context: .
      dockerfile: Dockerfile-Plugins
    networks:
      - management
  netbox-worker:
    image: netbox:v4.2
    pull_policy: never
    networks:
      - management
  netbox-housekeeping:
    image: netbox:v4.2
    pull_policy: never
    networks:
      - management
  postgres:
    networks:
      - management
  redis:
    networks:
      - management
  redis-cache:
    networks:
      - management

networks:
  management:
    external: true
EOF

Enable the plugin by adding configuration in configuration/plugins.py

PLUGINS = [
    "netbox_topology_views"
]

Build and Deploy

docker compose build --no-cache
docker compose up -d

Create the first admin user :

docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser

You should be able to access to netbox via port 8080

Sources