環境構築
本ページではNWLABで必要になるContainerlabの環境構築について解説します。
前提条件
下記の記事でまとめたLinux環境が作成済みであること。
構築手順
Containerlabのインストール
bash -c "$(curl -sL https://get.containerlab.dev)" -- -v 0.59.0
下記のようになればOKです。
izumin@nwlab-mini:~$ containerlab version
____ ___ _ _ _____ _ ___ _ _ _____ ____ _ _
/ ___/ _ \| \ | |_ _|/ \ |_ _| \ | | ____| _ \| | __ _| |__
| | | | | | \| | | | / _ \ | || \| | _| | |_) | |/ _` | '_ \
| |__| |_| | |\ | | |/ ___ \ | || |\ | |___| _ <| | (_| | |_) |
\____\___/|_| \_| |_/_/ \_\___|_| \_|_____|_| \_\_|\__,_|_.__/
version: 0.59.0
commit: 9e964727
date: 2024-10-23T02:44:27Z
source: https://github.com/srl-labs/containerlab
rel. notes: https://containerlab.dev/rn/0.59/
NWOSのイメージの取得
ここではAristaのcEOSを取得します。
その他のOSは別の記事でご紹介します。
Arista cEOS
Aristaのホームページよりアカウント登録
※個人のGmailなどでは登録できません。ネットワーク業界は限られた人しかOSを取得できないケースが多いのが難点です…
アカウント登録が完了したらソフトウェアダウンロードページより、cEOS Labのダウンロードを行う。
cEOS64-lab-4.33.0F.tar.xz
今回は上記のイメージをダウンロードした。
ダウンロードしたイメージはContainerlabがインストールされたホストにSCP等でコピーしておく。
ContainerlabがインストールされたホストでcEOSをインポートする。
sudo docker import cEOS64-lab-4.33.0F.tar ceos:4.33.0F
下記のようになればOK
izumin@nwlab:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ceos 4.33.0F c69acda3d30b 2 minutes ago 2.46GB
Nokia SRLinux
こちらは公開されているのでPullが可能。
一旦ここではなにもしなくてよい。
ghcr.io/nokia/srlinux:24.3.3
Containerlabの実行
上記で用意した2つのOSでトポロジを動かしてみる。
mkdir test-topology
cd test-topology
vim test.clab.yml
test.clab.ymlは下記を貼り付ける。
name: test
topology:
nodes:
srl:
kind: nokia_srlinux
image: ghcr.io/nokia/srlinux:24.3.3
ceos:
kind: arista_ceos
image: ceos:4.33.0F
links:
- endpoints: ["srl:e1-1", "ceos:eth1"]
トポロジの起動
sudo containerlab deploy
izumin@nwlab:~/test-topology$ sudo containerlab deploy
INFO[0000] Containerlab v0.59.0 started
INFO[0000] Parsing & checking topology file: test.clab.yml
INFO[0000] Creating docker network: Name="clab", IPv4Subnet="172.20.20.0/24", IPv6Subnet="3fff:172:20:20::/64", MTU=1500
INFO[0000] Could not read docker config: open /home/izumin/.docker/config.json: no such file or directory
INFO[0000] Pulling ghcr.io/nokia/srlinux:24.3.3 Docker image
INFO[0079] Done pulling ghcr.io/nokia/srlinux:24.3.3
INFO[0079] Creating lab directory: /home/izumin/test-topology/clab-test
INFO[0079] Creating container: "srl"
INFO[0079] Creating container: "ceos"
INFO[0085] Running postdeploy actions for Arista cEOS 'ceos' node
INFO[0085] Created link: srl:e1-1 <--> ceos:eth1
INFO[0085] Running postdeploy actions for Nokia SR Linux 'srl' node
INFO[0116] Adding containerlab host entries to /etc/hosts file
INFO[0116] Adding ssh config for containerlab nodes
+---+----------------+--------------+------------------------------+---------------+---------+----------------+----------------------+
| # | Name | Container ID | Image | Kind | State | IPv4 Address | IPv6 Address |
+---+----------------+--------------+------------------------------+---------------+---------+----------------+----------------------+
| 1 | clab-test-ceos | c4aa582a401e | ceos:4.33.0F | arista_ceos | running | 172.20.20.2/24 | 3fff:172:20:20::2/64 |
| 2 | clab-test-srl | a8f275290b26 | ghcr.io/nokia/srlinux:24.3.3 | nokia_srlinux | running | 172.20.20.3/24 | 3fff:172:20:20::3/64 |
+---+----------------+--------------+------------------------------+---------------+---------+----------------+----------------------+
izumin@nwlab:~/test-topology$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8f275290b26 ghcr.io/nokia/srlinux:24.3.3 "/tini -- fixuid -q …" 2 minutes ago Up About a minute clab-test-srl
c4aa582a401e ceos:4.33.0F "bash -c '/mnt/flash…" 2 minutes ago Up About a minute clab-test-ceos
上記のようになれば起動成功。
実際に機器にSSHをしてみる。 admin/adminでログイン可能。
izumin@nwlab:~/test-topology$ ssh clab-test-ceos -l admin
Warning: Permanently added 'clab-test-ceos' (ED25519) to the list of known hosts.
(admin@clab-test-ceos) Password:
ceos>
ceos>en
ceos#
ceos#show version
Arista cEOSLab
Hardware version:
Serial number: 40B75A5C43693BB65411113C6FC8E6C5
Hardware MAC address: 001c.7368.08a8
System MAC address: 001c.7368.08a8
Software image version: 4.33.0F-39050855.4330F (engineering build)
Architecture: x86_64
Internal build version: 4.33.0F-39050855.4330F
Internal build ID: 42a6523d-7efb-4034-9bc4-e80d2e19c8d5
Image format version: 1.0
Image optimization: None
Kernel version: 5.15.0-125-generic
Uptime: 4 minutes
Total memory: 248366212 kB
Free memory: 242115704 kB
ceos#show lldp neighbors
Last table change time : 0:04:26 ago
Number of table inserts : 1
Number of table deletes : 0
Number of table drops : 0
Number of table age-outs : 0
Port Neighbor Device ID Neighbor Port ID TTL
---------- ------------------------ ---------------------- ---
Et1 srl ethernet-1/1 120
トポロジの停止
トポロジの機器の停止を行う時は下記のコマンドで停止する。
コンフィグは保存されないので注意。立ち上げるたびに初期状態で起動します。
sudo containerlab destroy
izumin@nwlab:~/test-topology$ sudo containerlab destroy
INFO[0000] Parsing & checking topology file: test.clab.yml
INFO[0000] Parsing & checking topology file: test.clab.yml
INFO[0000] Destroying lab: test
INFO[0000] Removed container: clab-test-srl
INFO[0000] Removed container: clab-test-ceos
INFO[0000] Removing containerlab host entries from /etc/hosts file
INFO[0000] Removing ssh config for containerlab nodes
その他機能
その他のさまざまな機能やコマンドについては公式ドキュメントを確認ください。
https://containerlab.dev/manual/topo-def-file
次は各ネットワークOSのDockerイメージの作成方法について紹介します。