Arista cEOS docker-composeを使った操作例

スポンサーリンク

Arista cEOSの使い方について説明します。cEOSはAristaのコンテナ版ネットワーク機器です。このページではdocker composeを使ったcEOSの操作例を紹介します。

事前準備

Arista cEOSの基本的な使い方を見ながら、Arista cEOSのDockerイメージのインポートが完了している前提で操作方法を説明します。

cEOSの起動

docker-compose.ymlの作成

Arista cEOSの基本的な使い方で紹介した方法は、docker container, docker networkなどのコマンドを使いながらコンテナの構成を定義しましたが、docker-composeはこれら定義をyamlファイルで定義する方法です。もし、何度も使い回すような「よく使う」検証構成があるならば、Docker Composeを使った方が得策でしょう。

まずは構成となるyamlファイルを作成します。物理構成は以下の通りです。

     e1 +-----+ e2
   +----+ceos1+----+
   |    +-----+    |
   | e1         e1 |
+--+--+         +--+--+
|ceos2+---------+ceos3|
+-----+ e2   e2 +-----+

この物理構成を再現するyamlファイルの例は以下の通りです。yamlファイルの名前は「docker-compose.yml」としてください。「docker-compose.yml」とした場合は、docker-composeコマンド実行時にyamlファイルのパス指定を省略する事ができます。

cat << EOF > docker-compose.yml
version: '3'
services:
  ceos1:
    hostname: ceos1
    image: "ceos:4.24.2.2F"
    command: /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
    privileged: true
    environment:
      INTFTYPE: eth
      ETBA: 1
      SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT: 1
      CEOS: 1
      EOS_PLATFORM: ceoslab
      container: docker 
    networks:
      mgmt:
      net12:
      net13:
  ceos2:
    hostname: ceos2
    image: "ceos:4.24.2.2F"
    command: /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
    privileged: true
    environment:
      INTFTYPE: eth
      ETBA: 1
      SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT: 1
      CEOS: 1
      EOS_PLATFORM: ceoslab
      container: docker
    networks:
      mgmt:
      net12:
      net23:
  ceos3:
    hostname: ceos3
    image: "ceos:4.24.2.2F"
    command: /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
    privileged: true
    environment:
      INTFTYPE: eth
      ETBA: 1
      SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT: 1
      CEOS: 1
      EOS_PLATFORM: ceoslab
      container: docker
    networks:
      mgmt:
      net13:
      net23:
networks:
  mgmt:
  net12:
  net13:
  net23:
EOF

コンテナの起動

以下のコマンドでコンテナを起動します。

docker-compose up -d

正常にコンテナが起動した事を確認します。

[root@sandbox019 ~]# docker-compose up -d
Creating network "root_mgmt" with the default driver
Creating network "root_net12" with the default driver
Creating network "root_net13" with the default driver
Creating network "root_net23" with the default driver
Creating root_ceos3_1 ... done
Creating root_ceos2_1 ... done
Creating root_ceos1_1 ... done
[root@sandbox019 ~]# 
[root@sandbox019 ~]# docker-compose ps
    Name                  Command               State   Ports
-------------------------------------------------------------
root_ceos1_1   /sbin/init systemd.setenv= ...   Up           
root_ceos2_1   /sbin/init systemd.setenv= ...   Up           
root_ceos3_1   /sbin/init systemd.setenv= ...   Up           
[root@sandbox019 ~]# 

コンテナ操作方法

以下のようなコマンドでcEOSにログインします。第3引数のceos1などの値は、yamlファイルで定義したサービス名を指定します。

docker-compose exec ceos1 Cli
docker-compose exec ceos2 Cli
docker-compose exec ceos3 Cli

操作画面は以下のようになります。

Arista cEOSのdocker composeを使った操作例01

設定例の紹介

動作確認として3台の間でBGPを確立し、互いのLoopback同士が疎通可能になる事を確かめます。

             e1  +-----+ e1
   +-------------+ceos1+------------+
   |         .1  +-----+ .1         |
   | 192.168.12.0/24                | 192.168.13.0/24
e1 | .2                          .3 | e1
+--+--+ .2   192.168.23.0/24  .3 +--+--+
|ceos2+--------------------------+ceos3|
+-----+ e2                    e2 +-----+
 Loopback                        Loopback
10.1.1.1/32                     10.2.2.2/32

BGPの設定例は以下の通りです。

ceos1
! Command: show running-config
! device: ceos1 (cEOSLab, EOS-4.24.2.2F-18884008.42422F (engineering build))
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
agent Bfd shutdown
agent PowerManager shutdown
agent LedPolicy shutdown
agent Thermostat shutdown
agent PowerFuse shutdown
agent StandbyCpld shutdown
agent LicenseManager shutdown
!
hostname ceos1
!
spanning-tree mode mstp
!
no aaa root
!
interface Ethernet1
   no switchport
   ip address 192.168.12.1/24
!
interface Ethernet2
   no switchport
   ip address 192.168.13.1/24
!
interface Loopback0
   ip address 10.1.1.1/32
!
ip routing
!
router bgp 65000
   neighbor 192.168.12.2 remote-as 65000
   neighbor 192.168.12.2 maximum-routes 12000
   neighbor 192.168.13.3 remote-as 65000
   neighbor 192.168.13.3 maximum-routes 12000
   network 10.1.1.1/32
!
end
ceos2
! Command: show running-config
! device: ceos2 (cEOSLab, EOS-4.24.2.2F-18884008.42422F (engineering build))
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
agent Bfd shutdown
agent PowerManager shutdown
agent LedPolicy shutdown
agent Thermostat shutdown
agent PowerFuse shutdown
agent StandbyCpld shutdown
agent LicenseManager shutdown
!
hostname ceos2
!
spanning-tree mode mstp
!
no aaa root
!
interface Ethernet1
   no switchport
   ip address 192.168.12.2/24
!
interface Ethernet2
   no switchport
   ip address 192.168.23.2/24
!
interface Loopback0
   ip address 10.2.2.2/32
!
ip routing
!
router bgp 65000
   timers bgp 10 30
   neighbor 192.168.12.1 remote-as 65000
   neighbor 192.168.12.1 maximum-routes 12000
   neighbor 192.168.23.3 remote-as 65000
   neighbor 192.168.23.3 maximum-routes 12000
   network 10.2.2.2/32
!
end
ceos3
! Command: show running-config
! device: ceos3 (cEOSLab, EOS-4.24.2.2F-18884008.42422F (engineering build))
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
agent Bfd shutdown
agent PowerManager shutdown
agent LedPolicy shutdown
agent Thermostat shutdown
agent PowerFuse shutdown
agent StandbyCpld shutdown
agent LicenseManager shutdown
!
hostname ceos3
!
spanning-tree mode mstp
!
no aaa root
!
interface Ethernet1
   no switchport
   ip address 192.168.13.3/24
!
interface Ethernet2
   no switchport
   ip address 192.168.23.3/24
!
interface Loopback0
   ip address 10.3.3.3/32
!
ip routing
!
router bgp 65000
   timers bgp 10 30
   neighbor 192.168.13.1 remote-as 65000
   neighbor 192.168.13.1 maximum-routes 12000
   neighbor 192.168.23.2 remote-as 65000
   neighbor 192.168.23.2 maximum-routes 12000
   network 10.3.3.3/32
!
end

疎通確認は以下の通りです。

ceos1#show ip bgp summary 
BGP summary information for VRF default
Router identifier 10.1.1.1, local AS number 65000
Neighbor Status Codes: m - Under maintenance
  Neighbor         V  AS           MsgRcvd   MsgSent  InQ OutQ  Up/Down State   PfxRcd PfxAcc
  192.168.12.2     4  65000             48        48    0    0 00:07:11 Estab   1      1
  192.168.13.3     4  65000              6         6    0    0 00:00:10 Estab   1      1
ceos1#
ceos1#show ip route bgp

VRF: default
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - BGP, B I - iBGP, B E - eBGP,
       R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,
       O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,
       NG - Nexthop Group Static Route, V - VXLAN Control Service,
       DH - DHCP client installed default route, M - Martian,
       DP - Dynamic Policy Route, L - VRF Leaked,
       RC - Route Cache Route

 B I      10.2.2.2/32 [200/0] via 192.168.12.2, Ethernet1
 B I      10.3.3.3/32 [200/0] via 192.168.13.3, Ethernet2

ceos1#
ceos1#ping 10.2.2.2 source Loopback0
PING 10.2.2.2 (10.2.2.2) from 10.1.1.1 : 72(100) bytes of data.
80 bytes from 10.2.2.2: icmp_seq=1 ttl=64 time=0.145 ms
80 bytes from 10.2.2.2: icmp_seq=2 ttl=64 time=0.032 ms
80 bytes from 10.2.2.2: icmp_seq=3 ttl=64 time=0.038 ms
80 bytes from 10.2.2.2: icmp_seq=4 ttl=64 time=0.025 ms
80 bytes from 10.2.2.2: icmp_seq=5 ttl=64 time=0.027 ms

--- 10.2.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.025/0.053/0.145/0.046 ms, ipg/ewma 0.068/0.097 ms
ceos1#

cEOSの停止と削除

以下のコマンドでコンテナおよびネットワークを削除する事ができます。

docker-compose down

コマンドを実行すると以下のような出力が見られます。削除されてたコンテナおよびネットワークが想定通りであるかどうかを目視確認しておきましょう。

[root@sandbox019 ~]# docker-compose down
Stopping root_ceos3_1 ... done
Stopping root_ceos2_1 ... done
Stopping root_ceos1_1 ... done
Removing root_ceos3_1 ... done
Removing root_ceos2_1 ... done
Removing root_ceos1_1 ... done
Removing network root_mgmt
Removing network root_net12
Removing network root_net13
Removing network root_net23
[root@sandbox019 ~]# 
タイトルとURLをコピーしました