LoginSignup
0
0

More than 1 year has passed since last update.

arista ceos環境構築 忘備録

Last updated at Posted at 2021-12-04

インストール

環境

Server: 4Core mem 16GB
OS: Ubuntu 20.04.1

Docker

aptやrpmのデストロパッケージでもいいかもしれないけど念のため最新版インストール。

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) 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

コンテナイメージ取得

Aristaのサイトにユーザー登録し、ログイン(詳細省略)
https://www.arista.com/jp/user-registration

下記サイトからcEOSをダウンロード(なぜかtar.xzではなくtarファイルが落ちてきた)
https://www.arista.com/jp/support/software-download
ここではcEOS64-lab-4.27.0F.tarを利用
image.png

ダウンロードしたイメージをDockerにimport

$ sudo docker import cEOS64-lab-4.27.0F.tar ceos:4.27.0F
# 1分ぐらいかかる
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ceos         4.27.0F   831f8479cf54   10 seconds ago   1.73GB 

ceos起動テスト

$ sudo docker create \
  --name=ceos \
  --privileged \
  -e INTFTYPE=eth \
  -e ETBA=1 \
  -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \
  -e CEOS=1 -e EOS_PLATFORM=ceoslab \
  -e container=docker \
  -i -t ceos:4.27.0F /sbin/init \
  systemd.setenv=INTFTYPE=eth \
  systemd.setenv=ETBA=1 \
  systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 \
  systemd.setenv=CEOS=1 \
  systemd.setenv=EOS_PLATFORM=ceoslab \
  systemd.setenv=container=docker

# cEOS起動
$ sudo docker start ceos

# cEOSコンテナの起動確認
$ sudo docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
55ee1850ab59   ceos:4.27.0F   "/sbin/init systemd.…"   38 seconds ago   Up 23 seconds             ceos

# ターミナルログインしてみる
$ sudo docker exec -it ceos Cli

localhost>show version
Arista cEOSLab
Hardware version: 
Serial number: 
Hardware MAC address: Not available
System MAC address: Not available

Software image version: 4.27.0F-24308433.4270F (engineering build)
Architecture: x86_64
Internal build version: 4.27.0F-24308433.4270F
Internal build ID: 9088210e-613b-47db-b273-7c7b8d45a086
Image format version: 1.0

cEOS tools version: 1.1
Kernel version: 5.11.0-1022-azure

Uptime: 1 minute
Total memory: 16395120 kB
Free memory: 14754252 kB

# cEOSログアウト
localhost>quit
# cEOSコンテナ停止&削除
$ sudo docker stop ceos
ceos
$ sudo docker rm ceos
ceos

docker-topoインストール

dockerコマンドでも良いけどnetworkの設定が面倒なので簡単にnodeの作成とnode間リンクを作成できるdocker-topoを利用して下記トポロジーを作成してみる。
image.png

$ sudo apt-get install -y python3-pip python-is-python3 
$ sudo python3 -m pip install --upgrade --user git+https://github.com/networkop/docker-topo.git
# コマンドにパスが通ってないのでシンボリックリンク作成
$ sudo ln -s /root/.local/bin/docker-topo /usr/local/bin/docker-topo

# デフォルトで使われるceosイメージがceos:latestなのでタグ作成
$ sudo docker tag ceos:4.27.0F ceos:latest 
$ sudo docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ceos         4.27.0F   831f8479cf54   41 minutes ago   1.73GB
ceos         latest    831f8479cf54   41 minutes ago   1.73GB

# 下記設定ファイル作成。
$ cat testnet.yaml 
VERSION: 2
driver: veth
links:
    - endpoints: ["spine:eth1", "leaf1:eth1"]
    - endpoints: ["spine:eth2", "leaf2:eth1"]

# docker-topo実行
$ sudo docker-topo --create testnet.yaml 
INFO:__main__:
alias spine='docker exec -it testnet_spine Cli'
alias leaf1='docker exec -it testnet_leaf1 Cli'
alias leaf2='docker exec -it testnet_leaf2 Cli'
INFO:__main__:All devices started successfully
WARNING:pyroute2.ipdb.main:shutdown in progress

# ceosコンテナ起動
$ sudo docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS     NAMES
7f56757681a9   ceos:latest   "/sbin/init systemd.…"   4 minutes ago   Up 4 minutes             testnet_leaf2
c3ac12303145   ceos:latest   "/sbin/init systemd.…"   4 minutes ago   Up 4 minutes             testnet_leaf1
44d7b1386acc   ceos:latest   "/sbin/init systemd.…"   4 minutes ago   Up 4 minutes             testnet_spine

# 接続してみる
$ sudo docker exec -it testnet_spine Cli
localhost>

注意:Config保存

eosのwriteコマンドではConfigが保存されない。 ホストのdocker-topoでrunning configが保存される。次回docker-topo --create testnet.yamlすると保存したconfigで起動する。

# configの保存
$ sudo docker-topo -s testnet.yaml 
INFO:__main__:All configs saved in ./config
# config ディレクトリができる
$ ls -a ./config/
.  ..  testnet_leaf1  testnet_leaf2  testnet_spine
# configが保存されている
$ cat ./config/testnet_leaf1
> show running
! Command: show running-config at line 1
! device: localhost (cEOSLab, EOS-4.27.0F-24308433.4270F (engineering build))
!
no aaa root
!
transceiver qsfp default-mode 4x10G
!
##### <SNIP > ######

注意:docker-topo設定ファイル変更

testnet.yamlのような設定ファイルを変更する前に全EOSコンテナを停止する。停止する前にtestnet.yamlを変更してしまうとdocker-topoコマンドから 全EOSコンテナを停止できなくなる。(docker コマンドでゴミ掃除が必要になる)
コンテナの停止は下記で。

$ sudo docker-topo --destroy testnet.yaml
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0