zaki work log

作業ログやら生活ログやらなんやら

Arista EOSの検証用コンテナcEOS-labで"Cli"コマンドを叩けるか試した

cEOS-labコンテナを動かしてその先でいろいろ動かしてみるはずが、動かすかどうかでつまづいてしまったのでその作業ログを。
Cliコマンドとか分かってないので、動かし方を分かってない。
※ コンテナ自体は動いているので、Cli以外の方法で触るものだろうとは思っている(がREADMEに書かれてないので…その、なんというか、あれ)

Software Download - Arista

ちなみに、ダウンロードできるコンテナイメージは2020.09.19時点でこんな感じ。

f:id:zaki-hmkc:20200919215217p:plain

手順書

安定と安心のてくなべを参考にさせていただきました。

tekunabe.hatenablog.jp

1年半以上前の記事なので公式のバージョンもそこそこ更新されており、Cliコマンドが使えるか否かという点でいうと、以下の通りだった。

バージョン Cliが使えるか否か
cEOS-lab-4.20.5F 試してない
cEOS-lab-4.21.12M
cEOS-lab-4.22.7M
cEOS64-lab-4.23.4.2M 試してない
cEOS-lab-4.23.4.2M ×
cEOS64-lab-4.23.4.2M ×
cEOS-lab-4.24.2.2F ×
cEOS64-lab-4.24.2.2F ×

※ ホントはこんな「全バージョンで実行できるか否かの一覧作成」をするつもりは全くなかったんだけど…笑

readme

現時点で公開されている「cEOS-lab-README-generic.txt」は、

(This document uses 4.21.0F as an example, but the following instructions apply to all releases starting 4.21.0F)

となっており、4.21ベースの模様。

cEOS64-lab-4.24.2.2F (※動かせなかった)

バージョンがだいぶ更新されており、4.22以降は64bit版っぽいイメージが用意されている。 せっかくなので新しい"cEOS64-lab-4.24.2.2F.tar.xz"を選択。

chromeでDLしたら.xzが溶けてファイル名がcEOS64-lab-4.24.2.2F.tarになったりしたけど、実態はXZ compressed dataなので注意

$ file cEOS64-lab-4.24.2.2F.tar 
cEOS64-lab-4.24.2.2F.tar: XZ compressed data

といっても、そのままdocker importできる。

docker import

$ docker import cEOS64-lab-4.24.2.2F.tar ceos:latest
sha256:8434c650f68e3612d5ae0614e82d97d5a663026df41ef9744f265f45731087a0
(dev) [zaki@cloud-dev image]$ docker images ceos
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
ceos                latest              8434c650f68e        About a minute ago   1.77GB

ちなみにこの状態でパラメタ無しでコンテナ起動しようとしても

(dev) [zaki@cloud-dev image]$ docker run ceos
docker: Error response from daemon: No command specified.
See 'docker run --help'.

docker create

443は使用中なので、代わりに25443を使う

$ docker create --name=ceos --privileged -p 25443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:latest /sbin/init
875ec872dae3093b5923cc825c36da77adfd167de1f273a09049ba2336859bf2
(dev) [zaki@cloud-dev image]$ docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                       NAMES
875ec872dae3        ceos:latest                  "/sbin/init"             30 seconds ago      Created                                                 ceos

networkの追加

(dev) [zaki@cloud-dev image]$ sudo docker network create net1
1e7a6f36bebc4d4e8d890766cc60a599c0208d439b2615f5f9d2afafa63c1f79
(dev) [zaki@cloud-dev image]$ sudo docker network connect net1 ceos

run

(dev) [zaki@cloud-dev image]$ docker start ceos
ceos
$ sudo docker exec -it ceos cli
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"cli\": executable file not found in $PATH": unknown

無いらしい。

(dev) [zaki@cloud-dev image]$ sudo docker exec -it ceos sh
sh-4.2# cli
sh: cli: command not found
sh-4.2# Cli
sh: Cli: command not found

shはあるけど、Cliは無いらしい。

sh-4.2# Cli
CliCtrl              CliRelay             CliRelaySwitchAgent  CliShell           

似たコマンドでCliShellはあるが、

sh-4.2# CliShell 
Traceback (most recent call last):
  File "/usr/bin/CliShell", line 408, in <module>
    main()
  File "/usr/bin/CliShell", line 390, in main
    cliShell.setupConnection()
  File "/usr/bin/CliShell", line 123, in setupConnection
    ctty, self.pts_ )
  File "/usr/lib/python2.7/site-packages/CliShellLib.py", line 260, in connectToBackend
    sock, signalSock = self._connectToBackend( sysname, argv, env, uid, gid, ctty )
  File "/usr/lib/python2.7/site-packages/CliShellLib.py", line 226, in _connectToBackend
    time.sleep( 0.1 )
KeyboardInterrupt

起動しても何も応答がなく、Ctrl-cで停止するくらいしか操作法がよくわからん。


cEOS-lab-4.21.12M (動かせた)

ちょっとお手上げだったので、同じバージョンの4.21で試そう。

(dev) [zaki@cloud-dev image]$ docker import cEOS-lab-4.21.12M.tar ceos:4.21.12M
sha256:e56ad1d7eebc792d9ca66dab41557e337f2d6a74c91340767816a24e820b3d71
(dev) [zaki@cloud-dev image]$ docker create --name=ceos-4-21 --privileged -p 24443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:4.21.12M /sbin/init
1511077dd3162a3be3865ed50d000e1494aad388db746d92b30aad45c0a4cd72
(dev) [zaki@cloud-dev image]$ docker start ceos-4-21
ceos-4-21
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-21 Cli
localhost>

あっ、うごいた

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

Software image version: 4.21.12M-18662095.42112M (engineering build)
Architecture:           i386
Internal build version: 4.21.12M-18662095.42112M
Internal build ID:      3266415c-55a9-403c-a020-777efe5ff9aa

cEOS tools version: 1.1

Uptime:                 0 weeks, 3 days, 20 hours and 15 minutes
Total memory:           7990076 kB
Free memory:            1943660 kB

localhost>
localhost>show running-config
% Invalid input (privileged mode required)
localhost>en
localhost#show running-config
! Command: show running-config
! device: localhost (cEOSLab, EOS-4.21.12M-18662095.42112M (engineering build))
!
transceiver qsfp default-mode 4x10G
!
spanning-tree mode mstp
!
no aaa root
!
no ip routing
!
end
localhost#

動いてますね

cEOS-lab-4.24.2.2F (ダメ)

最初にうまくいかなかったバージョンの64がないバージョン。

$ docker import cEOS-lab-4.24.2.2F.tar ceos:4.24.2.2F
sha256:3f1567aa671d0aac9c83ac952e88a4d75baf65f44684f855216e3149b7f3ee3e
(dev) [zaki@cloud-dev image]$ docker create --name=ceos-4-24 --privileged -p 23443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:4.24.2.2F /sbin/init
13896de736fbfa703942ec98ed447af12b0413b437dc8f67afbe70c411d1f342
(dev) [zaki@cloud-dev image]$ docker start ceos-4-24
ceos-4-24
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-24 sh
sh-4.2# Cl
CliCtrl              CliRelay             CliRelaySwitchAgent  CliShell             CloudHa    

あー、64は関係なくて、4.24はCliコマンドが無いのね。

cEOS64-lab-4.23.4.2M (ダメ)

Fがダメ?

$ docker import cEOS64-lab-4.23.4.2M.tar ceos:4.23.4.2M64
sha256:4f838740b554971259e4086f6e48f70044e721a944bc33f4ae9d67e9ac6cac9f
$ docker create --name=ceos-4-23 --privileged -p 22443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:4.23.4.2M64 /sbin/init
764f96dfe0827fe9a142bddbbf24106e8524b7175f2731656e45088a0b5d08ea
(dev) [zaki@cloud-dev image]$ docker start ceos-4-23
ceos-4-23
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-23 Cli
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"Cli\": executable file not found in $PATH": unknown
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-23 sh
sh-4.2# Cl
CliCtrl              CliRelay             CliRelaySwitchAgent  CliShell             CloudHa     

なるほど、コマンド体系が違うかもしれん。

cEOS-lab-4.22.7M (Cli動く)

$ docker import cEOS-lab-4.22.7M.tar ceos:4.22.7M
sha256:a10db96332046efd58c578e3098949fc63cf8b6bb6a22e022c1b016eb5a587eb
(dev) [zaki@cloud-dev image]$ docker create --name=ceos-4-22 --privileged -p 21443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:4.22.7M /sbin/init
d8dd9cbe761a2c4df5fc31fdcc3ee5ea0f4f40c490d0801c20779c0b71fb2ecd
(dev) [zaki@cloud-dev image]$ docker start ceos-4-22
ceos-4-22
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-22 Cli
localhost>

これは動くのか!

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

Software image version: 4.22.7M-18857350.4227M (engineering build)
Architecture:           i686
Internal build version: 4.22.7M-18857350.4227M
Internal build ID:      7980773b-992a-4e45-b4ef-66a400409260

cEOS tools version: 1.1

Uptime:                 0 weeks, 3 days, 22 hours and 42 minutes
Total memory:           7990076 kB
Free memory:            950376 kB

localhost>

cEOS-lab-4.23.4.2M (だめ。Cliなし)

(dev) [zaki@cloud-dev image]$ docker import cEOS-lab-4.23.4.2M.tar ceos:4.23.4.2M
sha256:75effb6eefa838b45e1cd0a38cf4836133762881920c4199dba2ba7d8a8fe1f3
(dev) [zaki@cloud-dev image]$ docker create --name=ceos-4-23 --privileged -p 22443:443 -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceoslab -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i -t ceos:4.23.4.2M /sbin/init
e98a20504882be7be9c57e53b4bed5a8b6da3903e76c7ae5d0cc12c511b1c12f
(dev) [zaki@cloud-dev image]$ docker start ceos-4-23
ceos-4-23
(dev) [zaki@cloud-dev image]$ docker exec -it ceos-4-23 sh
sh-4.2# Cl
CliCtrl              CliRelay             CliRelaySwitchAgent  CliShell             CloudHa      

あーなるほど、4.23以降だとCliコマンドがないんだな。


runせずにdocker createでコンテナを作成できるの知らなかったw (いつもrunしか使ってなかった)