Как установить frr centos 7
Перейти к содержимому

Как установить frr centos 7

  • автор:

Список изменений в РЕД ОС 7.3.2 и в репозитории 7.3

РЕД ОС 7.3.2 является обновлением РЕД ОС 7.3. Дистрибутив собран на пакетной базе репозитория 7.3 и включает в себя пакеты последних версий со всеми исправлениями, улучшениями и обновлениями безопасности, накопленными за 2022 год. Все пользователи РЕД ОС 7.3 стандартной редакции могут перейти на 7.3.2 через штатное обновление системы (dnf update).

На нашем Youtube-канале вы можете ознакомиться с основными обновлениями, имеющимися в РЕД ОС 7.3.2, просмотрев видео Обзор обновления РЕД ОС 7.3, а также найти много другой полезной информации.

Основные изменения в установочном образе РЕД ОС 7.3.2:

  • Ядро Linux обновлено до версии 5.15.72.
  • Обновлен загрузчик GRUB (закрыты уязвимости «Boot Hole» и «Secure Boot Bypass 2021»).
  • Решена проблема с определением видеодрайверов Intel UHD на этапе установки РЕД ОС (обновлён пакет linux-firmware).
  • Обновлен дизайн оформления рабочего стола — появилось 2 новые темы. Желаемую тему можно выбрать в окне приветствия при первом входе в систему.
  • Из окна приветствия теперь можно установить Яндекс.Браузер — нажатием кнопки выполнится загрузка и установка rpm-пакета штатными средствами (через dnfdragora).
  • GPG-ключ подписи пакетов РЕД ОС теперь установлен в системе по умолчанию и не требует установки при первом обращении к репозиторию.
  • Предустановлен TLS-сертификат удостоверяющего центра Минцифры России для беспрепятственного доступа пользователей к важным Интернет-сервисам и сайтам, которые перешли на российские сертификаты.
  • Часовой пояс в установщике Anaconda теперь по умолчанию выставлен MSK (UTC+3), а для автоматического определения местоположения используется Российский сервис GeoIP.
  • В установщике появилась опция “Средства облачной настройки” (выполняет установку пакета cloud-init), обеспечивающая возможность автоматического конфигурирования РЕД ОС в средах виртуализации.
  • В системе предустановлены пакеты orca, atop, gnome-disk-utility, а также драйверы rtw89 и rtl8821ce, исключены устаревшие версии openjdk — 1.6 и 1.7.
  • Обновлены основные офисные приложения: LibreOffice 7.4.2.3, Thunderbird 102.4.0 и др.

Репозиторий РЕД ОС 7.3 обновился и пополнился следующими пакетами:

Пользовательское ПО:

  • Обновлен офисный пакет LibreOffice до версии 7.4.2.3.
  • Обновлены браузер Firefox 102.4.0 и почтовый клиент Thunderbird 102.4.0.
  • Инструмент для запуска Windows приложений Wine 7.16.
  • Система управления проектами ProjectLibre 1.9.3.
  • Обновлен клиент мгновенного обмена сообщениями Pidgin до версии 2.14.8.
  • Графический планировщик заданий Zeit 0.6.0.
  • Менеджер паролей KeePassXC 2.6.6.
  • Обновлена программа чтения с экрана Orca 42.0 и речевой синтезатор speech-dispatcher 0.11.2.
  • ПО для управления питанием TLP и TLPUI 1.5.0.
  • Программа для создания скриншотов Ksnip 1.10.0.
  • Обновлены пакеты для создания слайд–шоу Sox 14.4.2 и Imagination 3.6.
  • Программа для освобождения места на диске Bleachbit 4.4.0.
  • ПО для поиска дубликатов файлов Fslint 2.47.
  • Программы для создания и печати штрих-кодов Zint 2.11.0 и gLabels 3.4.1.

ПО для работы с файловыми системами:

  • Криптографические файловые системы EncFS (fuse-encfs 1.9.5) и eCryptfs (ecyptfs-utils 111).
  • Обновлены пакеты виртуальной файловой системы GNOME GVFS 1.48.2.
  • Пакеты для поддержки файловой системы ZFS 2.1.5.
  • Обновлены пакеты для монтирования сетевых файловых систем CIFS cifs-utils 6.15.
  • Программа для монтирования сетевых хранилищ Davfs2 1.6.1.
  • Инструмент для работы с облачными образами ВМ Сloud-utils 0.31.
  • ПО для синхронизации файлов Unison 2.51.5.

Серверное и системное ПО:

  • Обновлён Zabbix до версии 6.2.1.
  • Пересобран Nginx с дополненными модулями GeoIP2 и ModSecurity.
  • Ansible обновлен до версии 6.4 (размещен в подключаемом репозитории, пакет ansible6-release), добавлена поддержка РЕД ОС для работы распространенных плейбуков (идентифицирующих ОС по атрибуту ansible_os_family и другим).
  • Обновлен почтовый сервер Postfix до версии 3.7.2 и сервер печати Cups до версии 2.3.3op.
  • FTP-сервер Proftpd 1.3.6e.
  • DNS-сервер NSD 4.3.9.
  • Обновлен прокси-сервер Squid до версии 5.5.
  • Обновлена платформа компьютерной телефонии Asterisk до версии 18.4.0.
  • Обновлен программный брокер сообщений RabbitMQ 3.10.6.
  • Программа для вывода диалоговых окон Yad 10.1.
  • Инструмент управления и запуска контейнеров OCI Podman 3.4.0.
  • Пакеты для работы с LXC контейнерами Lxcfs 4.0.12, LXD 4.17 и Distrobuilder 1.3.
  • Набор инструментов для виртуализации Libvirt 7.6.0.
  • Обновлена графическая консоль управления машинами KVM Virt Viewer до версии 11.0.
  • ПО для организации VPN WireGuard версии 1.0.20210914.
  • Система предотвращения вторжений SSHGuard 2.4.2.
  • Балансировщик нагрузки DNS DNSDist 1.7.1 и подключений к удаленному рабочему столу X2gobroker 0.0.4.3.
  • Обновлены балансировщики нагрузки Keepalived до версии 2.2.7 и Haproxy до версии 2.6.0.
  • Обновлены системы мониторинга Nagios 4.4.7 и Dstat 0.7.4.
  • Инструмент реализации сетевой маршрутизации Frr 8.2.2.
  • Программа для работы с сетевыми протоколами Putty 0.77.
  • Обновлена библиотека OpenSSL до версии 1.1.1q.
  • ПО для управления сеансами SSH Redial 0.6.
  • Пакет для управления портами Knock 0.8.
  • Обновлен пакет для сканирования IP-сетей Nmap до версии 7.80.
  • Графический интерфейс для подключения удаленных USB-устройств USBIP-GUI версии 20210429 и для редактирования конфигураций Conky conky-manager 2.3.4.
  • Обновлен пакет для обработки ввода с сенсорных устройств libinput 1.21.0.
  • Платформа для визуализации анализа данных Grafana 7.5.11.
  • Система полнотекстового поиска и анализа данных OpenElasticSearch 1.13.2 (включая Kibana), а также инструмент сбора данных Logstash и поставщик данных Filebeat версий 7.10.2.
  • Пакеты для работы кластера corosync-qdevice 3.0.1 и corosync-qnetd 3.0.1.
  • Обновлен инструмент анализа дампа памяти Crash до версии 8.0.1.
  • Библиотеки для работы со статическими данными Whitenoise 6.2.0.
  • Программа создания зеркала репозитория Debmirror 2.36.
  • Инструменты для автоматизации процесса загрузки Linux Dracut 056.2.
  • Обновлен видеокодек Dirac до версии 1.0.2.
  • Программа для конфигурирования отображения кнопок устройств ввода Key Mapper 1.2.1.

ПО для работы с СУБД:

  • Объектно-реляционная СУБД PostgreSQL 14.
  • Менеджер бэкапов для серверов PostgreSQL Barman 3.0.1.
  • Пакеты для поддержки географических объектов в PostgreSQL PostGIS 2.5.5.
  • Обновлен драйвер ODBC для PostgreSQL до версии 13.01.
  • Инструмент для работы кластера PostgreSQL Patroni 2.1.3.
  • Обновлена библиотека для доступа к базе данных Microsoft SQL FreeTds до версии 1.3.12.

Средства разработки:

  • Обновлен PHP до версии 8.1.9 (размещен в подключаемом репозитории, пакет php81-release).
  • Обновлен пакет OpenJDK (Java) до версии 13.
  • Пакеты для языка программирования Go Golang 1.18.2.
  • Обновлен .NET до версии 6.0.
  • Инструмент для создания Flatpak-приложений Flatpak Builder 1.2.2.
  • Обновлена среда разработки для Python Thonny 3.3.14.
  • Многофункциональная среда разработки и аналог редактора кода Virtual Studio Codium 1.66.1.
  • Обновлен многофункциональный текстовый редактор для программирования Geany 1.38.
  • Обновлена среда разработки на основе компилятора Free Pascal Lazarus 2.2.2.
  • Образовательная среда программирования Kturtle 20.04.3.

ПО для образования:

  • Программа для работы с интерактивными досками OpenBoard 1.6.1 и инструмент поддержки жестов на сенсорных панелях touchegg 2.04.14.
  • Программный комплекс для разработки электрических схем и печатных плат KiCAD 6.0.0.
  • ПО для эконометрического моделирования Gretl и отдельный пакет для процессоров, не поддерживающих технологию AVX gretl-lite версий 2022а.
  • Программа для создания графических структур формул химических веществ XDrawChem 1.10.2.
  • Редактор и визуализатор молекулярных структур Avogadro 1.2.0.
  • Электронная периодическая система химических элементов Kalzium 19.12.1.
  • Пакеты для работы с химическими данными и молекулярными вычислениями в графическом интерфейсе Gabedit 2.5.1.
  • Химическая экспертная система OpenBabel 2.4.1.
  • Программный пакет квантовой химии OpenMolcas 21.10.
  • Библиотека для кристаллохимических вычислений и обработки соответствующих данных spglib 1.16.1.
  • Пакет для вычислений электронных состояний в атомах и молекулах libint 1.2.1.
  • Библиотека международных идентификаторов ИЮПАК inchi 1.0.6.

Драйверы устройств:

  • Обновлены драйверы видеоадаптеров Nvidia до версии 510.60.02.
  • Обновлены драйверы для принтеров Canon (в частности для BP311).
  • Драйверы для термопринтеров Godex.
  • Собраны драйверы для Wi-Fi-адаптеров MediaTek MT7961, RTL8812AU/21AU, RTL8814AU, RTL8188 EU/EUS, Edimax EW-7822ULC.
  • Драйвер сетевого адаптера Huawei Hi1822.
  • Собраны драйверы речевого кодека G.729 (asterisk-g72x 1.4.3) и драйверы телефонных карт потоков Digium, Sangoma (dahdi-linux 2.11.1).
  • Обновлены и собраны пакеты для работы звуковой карты Everest ESSX8336.
  • Драйвер преобразователя интерфейсов MOXA NPort npreal2 5.1.

Дата последнего изменения: 23.05.2023

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

Centos

Как правильно создать локальный репозиторий для конкретного пакета?

centos repository yum

Нужно восстановить работу сервера на centos 5

VDS Сервер на CentOS 5 падает через 5 минут работы после удаления логов

Запуск аваоийного режима при загрузке системы

Centos 7 сетевая связность

centos icmp ping

ошибка при обновлении пакетов

ZoneMinder 1.36 настройка аппаратного ускорения на AMD GPU и CentOS 7

amdgpu centos ffmpeg

решено

RHEL 7 -> Centos 7

centos dnf rhel

Майнер в centos вирус

атозапуск программы в ОС Centos 7

Centos. Как перманентно убрать автоматический маршрут сетевого интерфейса?

centos linux network

Подключиться к Wifi в Centos 7 без GUI и NetworkManager

Squid 3.5.8 на CentOS7 загрузка процессора 100%

centos cpu squid

Ограничения на дистрибутивы линукса в Реестре Российского ПО

centos gentoo реестр

Centos 7 + Mikrotik IPSEC

centos ipsec mikrotik

решено

Заблокировать исходящие соединение с IP через firewall-cmd

Installing FRR

FRRouting (FRR) is an IP routing protocol suite for Linux and Unix platforms. It includes protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP.

Since the FRR project was forked from Quagga, another routing protocol suite for Linux, FRR includes the fundamentals that made Quagga so popular as well as many other enhancements.

via https://docs.cumulusnetworks.com/cumulus-linux-41/Layer-3/FRRouting-Overview/

In this blogpost we will focus on how to install FRR on Debian based OS (such as Ubuntu) and on CentOS.

Installing on Ubuntu ( and other Debian based OS):

# add GPG key curl -s https://deb.frrouting.org/frr/keys.asc | sudo apt-key add - # possible values for FRRVER: frr-6 frr-7 frr-stable # frr-stable will be the latest official stable release FRRVER="frr-stable" echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) $FRRVER | sudo tee -a /etc/apt/sources.list.d/frr.list # update and install FRR sudo apt update && sudo apt install frr frr-pythontools 

Enter fullscreen mode

Exit fullscreen mode

Installing in CentOS:

# possible values for FRRVER: frr-6 frr-7 frr-stable # frr-stable will be the latest official stable release FRRVER="frr-stable" # add RPM repository on CentOS 6 curl -O https://rpm.frrouting.org/repo/$FRRVER-repo-1-0.el6.noarch.rpm sudo yum install ./$FRRVER* # add RPM repository on CentOS 7 curl -O https://rpm.frrouting.org/repo/$FRRVER-repo-1-0.el7.noarch.rpm sudo yum install ./$FRRVER* # add RPM repository on CentOS 8 curl -O https://rpm.frrouting.org/repo/$FRRVER-repo-1-0.el8.noarch.rpm sudo yum install ./$FRRVER* # install FRR sudo yum install frr frr-pythontools 

Enter fullscreen mode

Exit fullscreen mode

Configuring FRR for the first time

Enable IP forwarding

There are several kernel parameters that impact overall operation of FRR when using Linux as a router. Generally these parameters should be set in a sysctl related configuration file, e.g., /etc/sysctl.conf on Ubuntu based systems and a new file /etc/sysctl.d/90-routing-sysctl.conf on Centos based systems.

net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1 

Enter fullscreen mode

Exit fullscreen mode

Enable BGPD daemon

After a fresh install, starting FRR will do nothing. This is because daemons must be explicitly enabled by editing a file in your configuration directory. This file is usually located at /etc/frr/daemons and determines which daemons are activated when issuing a service start / stop command via init or systemd. To enable a particular daemon, simply change the corresponding ‘no’ to ‘yes’. Subsequent service restarts should start the daemon. To enable bpd daemon, in /etc/frr/daemons change bgpd=no to

bgpd=yes 

Enter fullscreen mode

Exit fullscreen mode

Restart and enable FRR

Once you have enabled daemon, now restart FRR and enable FRR systemd service to start at boot using following commands.

systemctl restart frr.service systemctl enable frr.service 

Enter fullscreen mode

Exit fullscreen mode

Links for reference:

  1. frrouting.org
  2. Learn Frrouting — Cumulus
  3. FRR User Manual
  4. FRR Releases
  5. FRR Overview — Cumulus

Installation

Containerlab is distributed as a Linux deb/rpm package and can be installed on any Debian- or RHEL-like distributive in a matter of a few seconds.

Pre-requisites#

The following requirements must be satisfied to let containerlab tool run successfully:

  • A user should have sudo privileges to run containerlab.
  • A Linux server/VM 2 and Docker installed.
  • Load container images (e.g. Nokia SR Linux, Arista cEOS) that are not downloadable from a container registry. Containerlab will try to pull images at runtime if they do not exist locally.

Install script#

Containerlab can be installed using the installation script which detects the operating system type and installs the relevant package:

Containerlab is distributed via deb/rpm packages, thus only Debian- and RHEL-like distributives can leverage package installation.
Other systems can follow the manual installation procedure.

 # download and install the latest release (may require sudo)  bash -c "$(curl -sL https://get.containerlab.dev)"  # download a specific version - 0.10.3 (may require sudo)  bash -c "$(curl -sL https://get.containerlab.dev)" -- -v 0.10.3 # with wget  bash -c "$(wget -qO - https://get.containerlab.dev)" 

Package managers#

It is possible to install official containerlab releases via public APT/YUM repository.

APT YUM APK AUR

 echo "deb [trusted=yes] https://apt.fury.io/netdevops/ /" | \  sudo tee -a /etc/apt/sources.list.d/netdevops.list sudo apt update && sudo apt install containerlab 
 yum-config-manager --add-repo=https://yum.fury.io/netdevops/ && \ echo "gpgcheck=0" | sudo tee -a /etc/yum.repos.d/yum.fury.io_netdevops_.repo sudo yum install containerlab 

Download .apk package from Github releases.

Arch Linux users can download a package from this AUR repository.

Manual package installation

Alternatively, users can manually download the deb/rpm package from the Github releases page.

 # manually install latest release with package managers  LATEST=$(curl -s https://github.com/srl-labs/containerlab/releases/latest | sed -e 's/.*tag\/v\(.*\)\".*/\1/')  # with yum  yum install "https://github.com/srl-labs/containerlab/releases/download/v$LATEST>/containerlab_$LATEST>_linux_amd64.rpm"  # with dpkg  curl -sL -o /tmp/clab.deb "https://github.com/srl-labs/containerlab/releases/download/v$LATEST>/containerlab_$LATEST>_linux_amd64.deb" && dpkg -i /tmp/clab.deb # install specific release with yum  yum install https://github.com/srl-labs/containerlab/releases/download/v0.7.0/containerlab_0.7.0_linux_386.rpm 

The package installer will put the containerlab binary in the /usr/bin directory as well as create the /usr/bin/clab -> /usr/bin/containerlab symlink. The symlink allows the users to save on typing when they use containerlab: clab .

Container#

Containerlab is also available in a container packaging. The latest containerlab release can be pulled with:

 docker pull ghcr.io/srl-labs/clab 

To pick any of the released versions starting from release 0.19.0, use the version number as a tag, for example, docker pull ghcr.io/srl-labs/clab:0.19.0

Since containerlab itself deploys containers and creates veth pairs, its run instructions are a bit more complex, but still, it is a copy-paste-able command.

For example, if your lab files are contained within the current working directory — $(pwd) — then you can launch containerlab container as follows:

 docker run --rm -it --privileged \  --network host \  -v /var/run/docker.sock:/var/run/docker.sock \  -v /var/run/netns:/var/run/netns \  -v /etc/hosts:/etc/hosts \  -v /var/lib/docker/containers:/var/lib/docker/containers \  --pid="host" \  -v $(pwd):$(pwd) \  -w $(pwd) \  ghcr.io/srl-labs/clab bash 

Within the started container you can use the same containerlab deploy/destroy/inspect commands to manage your labs.

Containerlab’ container command is itself containerlab , so you can deploy a lab without invoking a shell, for example:

 docker run --rm -it --privileged \  # -w $(pwd) \  ghcr.io/srl-labs/clab deploy -t somelab.clab.yml 

Manual installation#

If the linux distributive can’t install deb/rpm packages, containerlab can be installed from the archive:

 # get the latest available tag  LATEST=$(curl -s https://github.com/srl-labs/containerlab/releases/latest | \  sed -e 's/.*tag\/v\(.*\)\".*/\1/')  # download tar.gz archive  curl -L -o /tmp/clab.tar.gz "https://github.com/srl-labs/containerlab/releases/download/v$LATEST>/containerlab_$LATEST>_Linux_amd64.tar.gz"  # create containerlab directory  mkdir -p /etc/containerlab # extract downloaded archive into the containerlab directory  tar -zxvf /tmp/clab.tar.gz -C /etc/containerlab # (optional) move containerlab binary somewhere in the $PATH  mv /etc/containerlab/containerlab /usr/bin && chmod a+x /usr/bin/containerlab 

Windows Subsystem Linux (WSL)#

Containerlab runs on WSL, but you need to install docker-ce inside the WSL2 linux system instead of using Docker Desktop 3 .

If you are running Ubuntu 20.04 as your WSL2 machine, you can run this script to install docker-ce.

 curl -L https://gist.githubusercontent.com/hellt/e8095c1719a3ea0051165ff282d2b62a/raw/1dffb71d0495bb2be953c489cd06a25656d974a4/docker-install.sh | \  bash 

Once installed, issue sudo service docker start to start the docker service inside WSL2 machine.

Running VM-based routers inside WSL

In Windows 11 with WSL2 it is now possible to enable KVM support. Let us know if that worked for you in our Discord.

Apple macOS#

Running containerlab on Mac OS is possible both on ARM (M1/M2) and Intel chipsets with certain limitations and caveats rooted in different architectures and underlying OS.

ARM#

At the moment of this writing, there are not a lot 6 of Network OSes built for arm64 architecture. This fact alone makes it not practical to run containerlab natively on ARM-based Macs. Nevertheless, it is technically possible to run containerlab on ARM-based Macs by launching a Linux VM with x86_64 architecture and running containerlab inside this VM. This approach comes with a hefty performance penalty, therefore it is suitable only for tiny labs.

UTM#

The easiest way to start a Linux VM with x86_64 architecture on macOS is to use UTM. UTM is a free 7 and open-source graphical virtual machine manager that provides a simple and intuitive interface for creating, managing, and running virtual machines with qemu.

When you have UTM installed, you can download a pre-built Debian 12 UTM image built by the Containerlab team using the following command 8 :

 sudo docker run --rm -v $(pwd):/workspace ghcr.io/oras-project/oras:v1.1.0 pull \  ghcr.io/srl-labs/containerlab/clab-utm-box:0.1.0 

By running this command you will download the clab_debian12.utm file which is a UTM image with containerlab , docker-ce and gh tools pre-installed 9 .

Open the downloaded image with UTM File -> Open -> select .utm file and start the VM.

Once the VM is started, you can log in using debian:debian credentials. Run ip -4 addr in the terminal to find out which IP got assigned to this VM.
Now you can use this IP for your Mac terminal to connect to the VM via SSH 10 .

When logged in, you can upgrade the containerlab to the latest version with:

 sudo clab version upgrade 

and start downloading the labs you want to run.

Docker in Docker#

Another option to run containerlab on ARM-based Macs is to use Docker in Docker approach. With this approach, a docker-in-docker container is launched on the Mac OS inside the VM providing a docker environment. Below is a step-by-step guide on how to set it up.

Docker in docker guide

We’ll provide an example of a custom devcontainer that can be opened in VSCode with Remote Development extension pack installed.

Create .devcontainer directory in the root of the Containerlab repository with the following content:

 .devcontainer |- devcontainer.json |- Dockerfile 

Dockerfile devcontainer.json

 # The devcontainer will be based on Python 3.9  # The base container already has entrypoint, vscode user account, etc. out of the box  FROM mcr.microsoft.com/devcontainers/python:0-3.9-bullseye  # containelab version will be set in devcontainer.json  ARG _CLAB_VERSION # install some basic tools inside the container  # adjust this list based on your demands  RUN apt-get update \  && apt-get install -y --no-install-recommends \  sshpass \  curl \  iputils-ping \  htop \  && rm -rf /var/lib/apt/lists/* \  && rm -Rf /usr/share/doc && rm -Rf /usr/share/man \  && apt-get clean # install preferred version of the containerlab  RUN bash -c "$(curl -sL https://get.containerlab.dev)" -- -v $_CLAB_VERSION> \  && pip3 install --user yamllint 
 // For format details, see https://aka.ms/devcontainer.json. For config options, see the  // README at: https://github.com/devcontainers/templates/tree/main/src/python    "name": "clab-for-arm",  "build":   "dockerfile": "Dockerfile",  "args":   "_CLAB_VERSION": "0.43.0"  >  >,  "features":   // Containerlab will run in a docker-in-docker container  // it is also possible to use docker-outside-docker feature  "ghcr.io/devcontainers/features/docker-in-docker:2.2.0":   "version": "latest"  >  >,  // add any required extensions that must be pre-installed in the devcontainer  "customizations":   "vscode":   "extensions": [  // various tools  "tuxtina.json2yaml",  "vscode-icons-team.vscode-icons",  "mutantdino.resourcemonitor"  ]  >  >  > 

Once the devcontainer is defined as described above:

  • Open the devcontainer in VSCode
  • Import the required images for your cLab inside the container (if you are using Docker-in-Docker option)
  • Start you Containerlab
Intel#

On Intel based Macs, containerlab can be run in a Linux VM started by Docker Desktop for Mac 4 . To start using containerlab in this Linux VM we start a container with containerlab inside and mount the directory with our lab files into the container.

 1  2  3  4  5  6  7  8  9 10
 CLAB_WORKDIR=~/clab docker run --rm -it --privileged \  --network host \  -v /var/run/docker.sock:/var/run/docker.sock \  -v /run/netns:/run/netns \  --pid="host" \  -w $CLAB_WORKDIR \  -v $CLAB_WORKDIR:$CLAB_WORKDIR \  ghcr.io/srl-labs/clab bash 

The first command in the snippet above sets the working directory which you intend to use on your Mac OS. The ~/clab in the example above expands to /Users//clab and means that we intent to have our containerlab labs to be stored in this directory.

  1. It is best to create a directory under the ~/some/path unless you know what to do 5
  2. vrnetlab based nodes will not be able to start, since Docker VM does not support virtualization.
  3. Docker Desktop for Mac introduced cgroups v2 support in 4.3.0 version; to support the images that require cgroups v1 follow these instructions.
  4. Docker Desktop relies on a LinuxKit based HyperKit VM. Unfortunately, it is shipped with a minimalist kernel, and some modules such as VRF are disabled by default. Follow these instructions to rebuild it with more modules.

When the container is started, you will have a bash shell opened with the directory contents mounted from the Mac OS. There you can use containerlab commands right away.

Step by step example

Let’s imagine I want to run a lab with two SR Linux containers running directly on a Mac OS.

First, I need to have Docker Desktop for Mac installed and running.

Then I will create a directory under the $HOME path on my mac:

 mkdir -p ~/clab 

Then I will create a clab file defining my lab in the newly created directory:

 cat  ~/clab/2srl.clab.yml  name: 2srl  topology:   nodes:   srl1:   kind: srl   image: ghcr.io/nokia/srlinux   srl2:   kind: srl   image: ghcr.io/nokia/srlinux   links:   - endpoints: ["srl1:e1-1", "srl2:e1-1"]  EOF 

Now when the clab file is there, launch the container and don’t forget to use path to the directory you created:

 CLAB_WORKDIR=~/clab docker run --rm -it --privileged \  --network host \  -v /var/run/docker.sock:/var/run/docker.sock \  -v /run/netns:/run/netns \  --pid="host" \  -w $CLAB_WORKDIR \  -v $CLAB_WORKDIR:$CLAB_WORKDIR \  ghcr.io/srl-labs/clab bash 

Immediately you will get into the directory inside the container with your lab file available:

 root@docker-desktop:/Users/romandodin/clab# ls 2srl.clab.yml 

Now you can launch the lab, as containerlab is already part of the image:

 root@docker-desktop:/Users/romandodin/clab# clab dep -t 2srl.clab.yml INFO[0000] Parsing & checking topology file: 2srl.clab.yml INFO[0000] Creating lab directory: /Users/romandodin/clab/clab-2srl INFO[0000] Creating root CA INFO[0000] Creating docker network: Name='clab', IPv4Subnet='172.20.20.0/24', IPv6Subnet='2001:172:20:20::/64', MTU='1500' INFO[0000] Creating container: srl1 INFO[0000] Creating container: srl2 INFO[0001] Creating virtual wire: srl1:e1-1 srl2:e1-1 INFO[0001] Adding containerlab host entries to /etc/hosts file +---+----------------+--------------+-----------------------+------+-------+---------+----------------+----------------------+ | # | Name | Container ID | Image | Kind | Group | State | IPv4 Address | IPv6 Address | +---+----------------+--------------+-----------------------+------+-------+---------+----------------+----------------------+ | 1 | clab-2srl-srl1 | 574bf836fb40 | ghcr.io/nokia/srlinux | srl | | running | 172.20.20.2/24 | 2001:172:20:20::2/64 | | 2 | clab-2srl-srl2 | f88531a74ffb | ghcr.io/nokia/srlinux | srl | | running | 172.20.20.3/24 | 2001:172:20:20::3/64 | +---+----------------+--------------+-----------------------+------+-------+---------+----------------+----------------------+ 

Upgrade#

To upgrade containerlab to the latest available version issue the following command 1 :

 containerlab version upgrade 

This command will fetch the installation script and will upgrade the tool to its most recent version.

or leverage apt / yum utilities if containerlab repo was added as explained in the Package managers section.

From source#

To build containerlab from source:

with go build with goreleaser

To build containerlab from source, clone the repository and issue go build at its root.

When we release containerlab we use goreleaser project to build binaries for all supported platforms as well as the deb/rpm packages.
Users can install goreleaser and do the same locally by issuing the following command:

 goreleaser --snapshot --skip-publish --rm-dist 

Uninstall#

To uninstall containerlab when it was installed via installation script or packages:

Debian-based system RPM-based systems Manual removal

 apt remove containerlab 
 yum remove containerlab 

Containerlab binary is located at /usr/bin/containerlab . In addition to the binary, containerlab directory with static files may be found at /etc/containerlab .

SELinux#

When SELinux set to enforced mode containerlab binary might fail to execute with Segmentation fault (core dumped) error. This might be because containerlab binary is compressed with upx and selinux prevents it from being decompressed by default.

 sudo semanage fcontext -a -t textrel_shlib_t $(which containerlab) sudo restorecon $(which containerlab) 

or more globally:

 sudo setsebool -P selinuxuser_execmod 1 
  1. only available if installed from packages ↩
  2. Most containerized NOS will require >1 vCPU. RAM size depends on the lab size. Architecture: AMD64. ↩
  3. No need to uninstall Docker Desktop, just make sure that it is not integrated with WSL2 machine that you intend to use with containerlab. Moreover, you can make it even work with Docker Desktop with a few additional steps, but installing docker-ce into the WSL maybe more intuitive. ↩
  4. kudos to Michael Kashin who shared this approach with us ↩
  5. otherwise make sure to add a custom shared directory to the docker on mac. ↩
  6. FRR is a good example of arm64-capable network OS. Nokia SR Linux is going to be available for arm64 in the 2024. ↩
  7. There are two options to install UTM: via downloadable dmg file (free) or App Store (paid). The App Store version is exactly the same, it is just a way to support the project. ↩
  8. This command requires docker to be installed on your Mac OS. You can use Docker Desktop, Rancher or colima to run docker on your Mac OS. ↩
  9. If you want to install these tools on an existing Debian machine, you can run wget -qO- containerlab.dev/setup-debian | bash -s — all command. ↩
  10. The UTM image has a pre-installed ssh key for the debian user. You can download the shared private key from here. ↩

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *