Arista cEOSの使い方について説明します。cEOSはAristaのコンテナ版ネットワーク機器です。このページではdocker-topoを使ったcEOSの操作例を紹介します。
docker-topoはcEOSのネットワーク構成をyamlファイルで定義する事ができる便利ツールです。
- Arista vEOSの基本的な使い方
- Arista cEOSの基本的な使い方
- Arista cEOS docker-composeを使った操作例
- Arista cEOS docker-topoを使った操作例 (いまここ)
- Arista EOSの基本操作 SSHログインが出来るようになるまで
- Arista EOS vxlanの設定紹介
- Arista EOS Layer2 EVPNの設定紹介
- Arista EOS Layer3 EVPNの設定紹介
- Arista EOS Layer3 EVPNとダイナミックルーティングの併用
- Arista EOS MLAGの設定方法
- Arista EOS 実践的なvxlan設定
- Arista EOS 実践的なLayer2 EVPN設定
- Arista EOS アップリンク二重障害の対応
- Arista EOS 実践的なLayer3 EVPN設定
- Arista EOS 実践的なEVPNとダイナミックルーティング併用例
- Arista EOS ゼロタッチプロビジョニングの設定
事前準備
Arista cEOSの基本的な使い方を見ながら、Arista cEOSのDockerイメージのインポートが完了している前提で操作方法を説明します。
docker-topoのインストール
venvへのインストール(推奨)
docker-topoはpythonモジュールとして提供されるツールです。python venv環境へインストールする操作例は以下の通りです。<venv_name>は何か分かりやすい名前をつけておくと良いでしょう。
python3 -m venv <venv_name> source <venv_name>/bin/activate pip install git+https://github.com/networkop/docker-topo.git
docker-topoがインストールされた事を確認します。
(py-arista) [root@sandbox019 ~]# pip list DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. certifi (2020.6.20) chardet (3.0.4) docker (4.3.1) docker-topo (2.0.3) idna (2.10) importlib-resources (3.0.0) netaddr (0.8.0) packaging (20.4) pip (9.0.3) pyparsing (2.4.7) pyroute2 (0.5.3) PyYAML (5.3.1) requests (2.24.0) setuptools (39.2.0) six (1.15.0) urllib3 (1.25.10) websocket-client (0.57.0) zipp (3.3.0) You are using pip version 9.0.3, however version 20.2.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. (py-arista) [root@sandbox019 ~]#
非venvへのインストール(非推奨)
非推奨ですが、非venv環境にインストールすることもできます。非venvにインストールする操作例は以下の通りです。
pip3 install git+https://github.com/networkop/docker-topo.git
docker-topoがインストールされた事を確認します。
[root@sandbox019 ~]# pip3 list | grep docker DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. docker (4.3.1) docker-compose (1.27.4) docker-topo (2.0.3) dockerpty (0.4.1) [root@sandbox019 ~]#
docker-topoの操作例
docker-topoに読み込ませる構成ファイルは、GitHubにサンプルが掲載されています。まずはサンプルを動かしてみましょう。
トポロジーファイルの作成
git cloneします。
git clone https://github.com/networkop/docker-topo.git
下記のディレクトリにサンプルとなる構成ファイルがいくつか格納されています。
(py-arista) [root@sandbox019 ~]# cd docker-topo/topo-extra-files/examples/v2 (py-arista) [root@sandbox019 v2]# ls -l 合計 52 drwxr-xr-x 3 root root 98 10月 4 16:40 14rtr -rw-r--r-- 1 root root 151 10月 4 16:40 2-node-intf.yml -rw-r--r-- 1 root root 217 10月 4 16:41 2-node.yml -rw-r--r-- 1 root root 332 10月 4 16:40 3-node.yml -rw-r--r-- 1 root root 508 10月 4 16:40 5-node-ls.yml drwxr-xr-x 2 root root 63 10月 4 16:40 config -rw-r--r-- 1 root root 266 10月 4 16:40 cvp.yml -rw-r--r-- 1 root root 312 10月 4 16:40 macvlan.yml -rw-r--r-- 1 root root 213 10月 4 16:40 mdriver.yml -rw-r--r-- 1 root root 299 10月 4 16:40 mini.yml -rw-r--r-- 1 root root 478 10月 4 16:40 openstack.yml -rw-r--r-- 1 root root 282 10月 4 16:40 veos-3node.yml -rw-r--r-- 1 root root 123 10月 4 16:40 veth.yml -rw-r--r-- 1 root root 222 10月 4 16:40 vmx-csr-xrv.yml -rw-r--r-- 1 root root 198 10月 4 16:40 vmx-csr.yml
cEOSのDockerイメージのリポジトリ名とタグ名を調べます。もし、インポートされていない方は、Arista cEOSの基本的な使い方を見ながら、Arista cEOSのDockerイメージをインポートしてください。
(py-arista) [root@sandbox019 v2]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE ceos 4.24.2.2F 74bd2ae92ca7 4 hours ago 1.77GB
トポロジーファイルについて、CEOS_IMAGEの値を環境に合わせてリポジトリ名とタグ名を変更します。2-node.ymlの場合の編集例を以下に示します。
# vi 2-node.yml VERSION: 2 CEOS_IMAGE: ceos:4.24.2.2F PUBLISH_BASE: 9000 driver: veth links: - endpoints: - "Device-A:eth1" - "Device-B:eth2" - endpoints: ["Device-A:eth2", "Device-B:eth1"]
コンテナの起動
docker-topoコマンドは–helpを付与すると使い方を調べる事ができます。
(py-arista) [root@sandbox019 v2]# docker-topo --help usage: docker-topo [-h] [-d] [--create | --destroy] [-s] [-a] topology Tool to create docker topologies positional arguments: topology Topology file optional arguments: -h, --help show this help message and exit -d, --debug Enable Debug Actions: Create or destroy topology --create Create topology --destroy Destroy topology Save: Save or archive the topology -s, --save Save topology configs -a, --archive Archive topology file and configs
2-node.ymlで定義されたコンテナを起動する操作例は以下の通りです。
docker-topo --create 2-node.yml
コマンドを実行すると以下のようなメッセージが出力されます。
(py-arista) [root@sandbox019 v2]# docker-topo --create 2-node.yml INFO:__main__: alias Device-A='docker exec -it 2-node_Device-A Cli' alias Device-B='docker exec -it 2-node_Device-B Cli' INFO:__main__:All devices started successfully WARNING:pyroute2.ipdb.main:shutdown in progress WARNING:pyroute2.ipdb.main:shutdown in progress (py-arista) [root@sandbox019 v2]#
コンテナへのログイン
docker ls コマンドなどでコンテナ名を調べます。
(py-arista) [root@sandbox019 v2]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f038a4ce46cb ceos:4.24.2.2F "/sbin/init systemd.…" About a minute ago Up About a minute 2-node_Device-B 05d53423c15d ceos:4.24.2.2F "/sbin/init systemd.…" About a minute ago Up About a minute 2-node_Device-A
docker execコマンドなどでコンテナへログインします。
docker exec -i -t 2-node_Device-A Cli docker exec -i -t 2-node_Device-B Cli
操作画面は以下のようになります。
設定の保存
docker-topoで作成されたトポロジーは、configディレクトリに格納された設定ファイルを読み込む仕様になっています。ですので、設定をconfig配下に保存しておけば、次回、検証時に初期設定を読み込む事ができます。
作成する設定を保存するには、docker-topo –saveを使用します。コマンドの実行例は以下の通りです。
docker-topo --save 2-node.yml
config配下に設定が保存された事を確認します。
(py-arista) [root@sandbox019 v2]# docker-topo --save 2-node.yml Config directory exists, existing files may be overwritten. Continue? [y/n]:y INFO:__main__:All configs saved in /root/docker-topo/topo-extra-files/examples/v2/./config (py-arista) [root@sandbox019 v2]# ls -l config/ 合計 20 -rw-r--r-- 1 root root 644 10月 4 17:13 2-node_Device-A -rw-r--r-- 1 root root 531 10月 4 17:13 2-node_Device-B -rw-r--r-- 1 root root 18 10月 4 16:40 veos_vEOS-1 -rw-r--r-- 1 root root 18 10月 4 16:40 veos_vEOS-2 -rw-r--r-- 1 root root 18 10月 4 16:40 veos_vEOS-3 (py-arista) [root@sandbox019 v2]#
検証の終了
検証を終了する時は以下のコマンドを実行します。コンテナおよびネットワークが削除されます。
docker-topo --destroy 2-node.yml