From daa1e75ae1acc1e70563f08cbb6787a82d46308d Mon Sep 17 00:00:00 2001 From: pa Date: Thu, 30 May 2024 09:34:51 +0000 Subject: [PATCH] update clab --- .../clab-build-containerlab-with-ceos.yml | 1 + .vscode/settings.json | 4 +- .../.devcontainer/Dockerfile | 3 +- .../.devcontainer/devcontainer.json | 1 + .../ceos-download.png | Bin 0 -> 70516 bytes .../containerlab_export_white_ink.svg | 1 + docs/clab-build-containerlab-with-ceos.md | 113 +++++++++++++++++- mkdocs.yml | 2 + slides/clab-build-containerlab-with-ceos.md | 1 + 9 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 docs/assets/img/clab-build-containerlab-with-ceos/ceos-download.png create mode 100644 docs/assets/img/clab-build-containerlab-with-ceos/containerlab_export_white_ink.svg diff --git a/.github/workflows/clab-build-containerlab-with-ceos.yml b/.github/workflows/clab-build-containerlab-with-ceos.yml index 1c34cbd..c2bafeb 100644 --- a/.github/workflows/clab-build-containerlab-with-ceos.yml +++ b/.github/workflows/clab-build-containerlab-with-ceos.yml @@ -20,5 +20,6 @@ jobs: from_image: "ghcr.io/aristanetworks/avd/base" from_variant: "python3.11" username: "avd" + clab_version: "0.54.2" ceos_lab_version: "4.30.6M" git_init: True diff --git a/.vscode/settings.json b/.vscode/settings.json index e257fde..f862110 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -28,7 +28,9 @@ "br", "sup" ] - } + }, + // disable as MD046 is not behaving correctly with Mkdocs + "MD046": false }, "markdown.marp.enableHtml": true } \ No newline at end of file diff --git a/containers/clab-build-containerlab-with-ceos/.devcontainer/Dockerfile b/containers/clab-build-containerlab-with-ceos/.devcontainer/Dockerfile index 1d05cb0..f498ea8 100644 --- a/containers/clab-build-containerlab-with-ceos/.devcontainer/Dockerfile +++ b/containers/clab-build-containerlab-with-ceos/.devcontainer/Dockerfile @@ -35,5 +35,6 @@ USER ${USERNAME} RUN /bin/addAliases.sh # install the latest yamllint and eos-downloader -RUN pip3 install --user yamllint \ +RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v ${CLAB_VERSION} \ + && pip3 install --user yamllint \ && pip install --user "eos-downloader>=0.10.1" \ No newline at end of file diff --git a/containers/clab-build-containerlab-with-ceos/.devcontainer/devcontainer.json b/containers/clab-build-containerlab-with-ceos/.devcontainer/devcontainer.json index 798a25a..d92adaf 100644 --- a/containers/clab-build-containerlab-with-ceos/.devcontainer/devcontainer.json +++ b/containers/clab-build-containerlab-with-ceos/.devcontainer/devcontainer.json @@ -5,6 +5,7 @@ "FROM_IMAGE": "${localEnv:FROM_IMAGE}", "FROM_VARIANT": "${localEnv:FROM_VARIANT}", "USERNAME": "${localEnv:USERNAME}", + "CLAB_VERSION": "${localEnv:CLAB_VERSION}", "CEOS_LAB_VERSION_ARG": "${localEnv:CEOS_LAB_VERSION_ARG}", "GIT_INIT_ARG": "${localEnv:GIT_INIT_ARG}" } diff --git a/docs/assets/img/clab-build-containerlab-with-ceos/ceos-download.png b/docs/assets/img/clab-build-containerlab-with-ceos/ceos-download.png new file mode 100644 index 0000000000000000000000000000000000000000..51e2a8e716083c6540fe81089892d8f21d8fbac2 GIT binary patch literal 70516 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/assets/img/clab-build-containerlab-with-ceos/containerlab_export_white_ink.svg b/docs/assets/img/clab-build-containerlab-with-ceos/containerlab_export_white_ink.svg new file mode 100644 index 0000000..c26dfc6 --- /dev/null +++ b/docs/assets/img/clab-build-containerlab-with-ceos/containerlab_export_white_ink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/clab-build-containerlab-with-ceos.md b/docs/clab-build-containerlab-with-ceos.md index 7cf768b..ea21005 100644 --- a/docs/clab-build-containerlab-with-ceos.md +++ b/docs/clab-build-containerlab-with-ceos.md @@ -1,5 +1,9 @@ # Build Containerlab with cEOS +!!! Info "What is this workshop about" + + This workshop is a step-by-step guide explaining how to build a lab environment with [Containerlab](https://containerlab.srlinux.dev/) and Arista cEOS-lab. It is focusing on essential and cEOS-lab specific features. Please check [Containerlab documentation](https://containerlab.srlinux.dev/) for more details. + !!! Warning "Lab Documents Not Finished" DO NOT ENTER! :skull_and_crossbones:{ .heartbeat } @@ -25,7 +29,7 @@ [Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/slides/clab-build-containerlab-with-ceos.html){ target=_blank } [PDF Slides](https://{{gh.org_name}}.github.io/{{gh.repo_name}}/pdfs/clab-build-containerlab-with-ceos.pdf){ target=_blank } -!!! Info "Last reviewed: 02/05/2024" +!!! Info "Last reviewed: 30/05/2024" Demos and labs reviewed over 6 month age may be outdated. @@ -39,7 +43,7 @@ It is possible to run the lab on your local machine (or any server) instead of u You can [download all required lab files here](https://arista-netdevops-community.github.io/one-click-se-demos/lab_archives/clab-build-containerlab-with-ceos.tar.gz). However you must take care of you VSCode setup and setting up environment variables. Also keep in mind that auto-downloaded image will not work on ARM-based MacBooks. -## How To Run The Demo +## How To Run The Workshop ???+ Tip "Wait until cEOS-lab image will be imported" @@ -48,11 +52,108 @@ However you must take care of you VSCode setup and setting up environment variab For example due to incorrecte token or other API failure on arista.com. In that case you can upload the image manually by right-clicking the Explorer tab of the VSCode interface. +To run the labs in this workshop, you can use one of the following options: + +- Build you own Ubuntu VM from scratch. (Recommended!) + - This option will allow you to experience the entire cLab enviroment build process from the very start, without any pre-installed dependancies + - Requirements + - Ubuntu LTS 22.04 or later + - 8 GB RAM and 4 vCPUs +- Start the [Github Codespace](https://codespaces.new/{{gh.repository}}?quickstart=1&devcontainer_path=.devcontainer%2Fclab-build-containerlab-with-ceos%2Fdevcontainer.json) from this repository. (Fastest!) +- Open the lab dev container locally on your laptop with Docker Desktop or sever with Docker CE: + - you can [download required files here](https://arista-netdevops-community.github.io/one-click-se-demos/lab_archives/clab-build-containerlab-with-ceos.tar.gz) and open them in VSCode + - when running the lab locally, you must set all required environment variables on your machine + +## CPU Architechture + +- Only x86 CPU architecture is supported! +- It is technically possible to [run Container lab on ARM](https://containerlab.dev/install/#containerlab-on-arm-based-macs), but there are no network device images available for ARM as of May 2024. + +## Setup Docker on the Host + +> Check if Docker is already installed. In this case you can skip the steps below. + +1. Install Docker on the host. The detailed instructions are available [here](https://docs.docker.com/engine/install/ubuntu/). You can used one-liner script for that. +2. Add your user to the `docker` group. +3. Logout and login again to apply the changes. +4. Check the Docker version and run `hello-world` container to test functionality. +5. You must be able to run `docker` commands without `sudo` if it was installed correctly. + +```bash +# install Docker +sudo curl -fsSL https://get.docker.com | sh +# add user to the docker group +sudo usermod -aG docker ${USER} +# test docker +docker --version +docker run hello-world +``` + +> **NOTE**: If you are running this workshop in Codespace or provided dev container, Docker is pre-installed. As the workshop magic happens inside a container in this case, we rely on Docker-in-Docker concept to provide required functionality. + +## Setup Git (Optional) + +- Git must be pre-installed on a Linux system. Otherwise you are in a wrong place. Escape! 👾 🚀 +- Setup your name and email address: + + ```bash + git config --global user.name "" + git config --global user.email "" + ``` + +- Check the current configuration: + + ```bash + git config --list + ``` + +> **NOTE**: On Codespace Git is pre-installed and pre-configured. + +## Download cEOS-lab Image + +1. Login to [Arista Software Download](https://www.arista.com/en/support/software-download) portal. You need to have an account to download the image. +2. Select `EOS > Active Releases > 4.30 > EOS-4.30.6M > cEOS-lab`. +3. Download `cEOS-lab-4.30.6M.tar.xz` image. +4. Upload the image to your lab VM. For example, you can use SFTP to transfer the image: + + ```bash + sftp ${REMOTE_USER}@${UBUNTU_VM_IP}:/home/${REMOTE_USER}/${IMAGE_DIR} <<< $'put cEOS-lab-4.30.6M.tar*' + # for example: + # sftp user@10.10.10.11:/home/user/images <<< $'put cEOS-lab-4.30.6M.tar*' + ``` + +> If Github Codespace or provided Dev Container is used and the Arista token is set, the image will be pulled from arista.com automatically. + +![bg right 80%](assets/img/clab-build-containerlab-with-ceos/ceos-download.png) + +## Import cEOS-lab Image + +1. Go to the directory with the uploaded image and import the image: + + ```bash + docker import cEOS-lab-4.30.6M.tar.xz arista/ceos:4.30.6M + ``` + + > NOTE: you can also import the image with the tag latest to allow quick "upgrade" of those lab where specific version is not required: `docker tag arista/ceos:4.30.6M arista/ceos:latest` + +2. Confirm that the image was imported successfully: + + ```console + $ docker image ls + REPOSITORY TAG IMAGE ID CREATED SIZE + arista/ceos 4.30.6M 21b540a4a343 45 minutes ago 1.95GB + arista/ceos latest 21b540a4a343 45 minutes ago 1.95GB + hello-world latest b038788ddb22 3 months ago 9.14kB + ``` + +## Install Containerlab + +It's just a one-liner: + ```bash -# 1. start cLab -make start +bash -c "$(curl -sL https://get.containerlab.dev)" ``` -???+ Tip "Wait until all devices will start streaming to CVaaS." +Refer to the [Containerlab quick start documentation](https://containerlab.dev/quickstart/) for the details. - This may take a while. +> Containerlab is pre-installed if you are using Codespaces. diff --git a/mkdocs.yml b/mkdocs.yml index 05c9fc4..07cb61d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -81,6 +81,8 @@ markdown_extensions: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format + # allows list ident with 2 spaces + - mdx_truly_sane_lists copyright: >  🍪 Change cookie settings diff --git a/slides/clab-build-containerlab-with-ceos.md b/slides/clab-build-containerlab-with-ceos.md index cdecb49..e3de0a7 100644 --- a/slides/clab-build-containerlab-with-ceos.md +++ b/slides/clab-build-containerlab-with-ceos.md @@ -203,6 +203,7 @@ docker run hello-world ``` - Refer to the [Containerlab quick start documentation](https://containerlab.dev/quickstart/) for the details. +- Containerlab is pre-installed if you are using Codespaces. ---