えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

GNS3・QEMU上でvEOSを起動する

お伝えしたいこと

Arista vEOSをGNS3上で起動するためのセットアップ手順を紹介します。
Arista vEOSとは、Arista社が提供するL3SWの仮想アプライアンス (VM版) です。

今回は仮想化ドライバにQEMUを使います。
QEMUは、GNS3をLinux上で動かしている方に向いています。

Arista vEOSのダウンロード

Arista Software Downloadのページからダウンロードします。
(※) URLの通り、トップページからSupport > Software DownloadのリンクでSoftware Downloadページにアクセスできます

このページにアクセスするには、Arista社にユーザー登録する必要があります。
vEOSを利用するだけであれば、Arista社から製品を購入していなくてもアカウント登録できます。
アカウント登録完了から実際にログインできるまで、数十分ほどラグがあったと思います。

ログインできたら下の方へスクロールし、vEOS-lab配下の以下2ファイルをダウンロードしてください。

  • Aboot-veos-serial-x.x.x.iso (最新版を選択)
  • vEOS64-lab-x.xx.xM.vmdk (Mがつく中で最新版を選択)

download_veos

(参考) AbootとAboot-serial

AbootはvEOSのBootloaderです。
Aboot-veosはシリアルコンソール非対応版、Aboot-veos-serialはシリアルコンソール対応版です。

vEOSをGNS3上で動かす場合はシリアルコンソールに対応していたほうが便利なので、Aboot-veos-serialを使いましょう。

(参考) vEOSの推奨バージョンの選び方

Arista Software DownloadRecommended Releasesタブに記載がありますが、Arista vEOSの推奨バージョンはMがつく中での最新版です。

MはMaintenance Releaseという意味であり、いわゆる安定版です。
基本的にはM付きの最新版を選ぶのが無難です。

Fというフラグがついたバイナリもありますが、これはFeatureの略です。
最新版の機能を追加したリリースであることを意味しています。
どうしても試したい機能が最新版でリリースされたときのみ、最新版のF付きリリースを試しても良いかもしれません。

vEOSをGNS3に登録する

手順の大半はGNS3・QEMU上でLinuxを起動すると同様です。
したがって、今回はややシンプルに手順を説明します。

詳細が気になった方は、上記記事をご確認ください。

(参考) vEOSの動作要件

CloudEOS and vEOS Router - Using the vEOS Router on KVM and ESXiによると、vEOSの動作要件は以下のとおりです。

項目 推奨値
vCPUコア数 最低2コア、最大16コア
RAMサイズ 最低4GiB
ディスクサイズ 最低8GiB
仮想NIC 最大8まで

仮想ディスクファイルの格納

#Arista vEOSのダウンロードでダウンロードした2ファイルを~/GNS3/images/QEMU/配下に格納してください。
これらのファイルは、現在のユーザーが読み書きできる必要があります。
(正確には、gns3serverプロセスが読み書きできる必要があります)

ls -l ~/GNS3/images/QEMU/Aboot-veos-serial*.iso ~/GNS3/images/QEMU/vEOS64-lab*.vmdk
# -rw-r--r--. 1 endy endy   6291456 Apr 29 12:06 /home/endy/GNS3/images/QEMU/Aboot-veos-serial-8.0.1.iso
# -rw-r--r--. 1 endy endy 473235456 Apr 29 12:07 /home/endy/GNS3/images/QEMU/vEOS64-lab-4.26.5M.vmdk

GNS3にQEMU仮想マシンとして登録する

本セクションでは、準備した仮想ディスクファイルをGNS3に登録します。

まずはGNS3を起動し、Edit > Preferences (Ctrl+Shift+P) から設定画面を開きます。

左のメニューからQEMU VMsを選択し、NewボタンからQEMUで再生する仮想マシンを新規登録します。

create_qemu_vm1

わかりやすい仮想マシン名を入力します。
今回はvEOSとします。

register_veos1

QEMUコマンドのパスを指定します。
今回は/usr/bin/qemu-kvmとします。

RAMサイズはvEOSの動作要件に合わせて4096 MiBとします。

register_veos2

コンソールタイプを選択します。
シリアルコンソールが便利なので、telnetを選択します。

register_veos3

セットするディスクファイルを選択します。
ここではAboot-veos-serial-x.x.x.isoを選択します。
vEOS64-lab-x.xx.xM.vmdkは、後ほどVMの編集画面でセットします。

register_veos4

QEMU仮想マシンをカスタマイズする

前セクションで登録した仮想マシンを更にカスタマイズします。
作成した仮想マシンを選択し、Editから更に設定変更します。

edit_veos1

以降のセクションでは、変更した箇所をピンクの枠で囲みます。

General settings

アイコンはL3SWに近い印象のswitch_multilayerを選択しました。
CPUコア数は、ホストマシンのスペックに応じてご検討ください。

edit_veos2

HDD

Disk interfaceはvirtioを選択します。

また、ディスクファイルは以下のようにセットしてください (※)
ディスクファイルは~/GNS3/images/QEMU/配下に格納されています。
(※) CloudEOS and vEOS Router - Launching vEOS in LinuxBridge ModeによるとISOファイルをHDCに、ディスクファイル (qcow2)をHDAにセットしていますが、これでは動きません。Abootを先に起動し、Abootからディスクファイル内のEOSを起動するのが本来の起動順序なので、Abootの方が起動の優先順位を高くする必要があります。LinuxQuestions.org - IDE master/slaveの情報も踏まえ、起動デバイスであるAbootをPrimary Masterに配置するのが良いでしょう

接続先 ディスクファイル
HDA
(Primary Master)
Aboot-veos-serial-x.x.x.iso
HDB
(Primary Slave)
vEOS64-lab-x.xx.xM.vmdk

edit_veos3

CD/DVD

CD/DVDは特にいじりません。

edit_veos4

Network

Arista vEOSを含め、多くのNW機器の仮想アプライアンスは先頭ポートがManagement、2ポート目以降がサービスポートという扱いになります。
Arista vEOSの場合、ポートアサインは下表のようになります。
(※) ポートアサインは実機にログインして確認しました

VMNIC番号 vEOS上のinterface#
0 Management1
1 Ethernet1
2 Ethernet2
3 Ethernet3
4 Ethernet4
5 Ethernet5
6 Ethernet6
7 Ethernet7

GNS3上も上記のような表示名で見せるために、下図のような設定としました。
Ma1のような省略表記にした理由は、トポロジ上のNIC番号は短い表記の方が扱いやすいためです。

NIC数は動作要件に合わせて8に、性能向上のためにドライバはvirtioにしました。

edit_veos5

Advanced

Advancedは特にいじりません。

edit_veos6

Usage

最低限のコメントのみ書いておきました。

edit_veos7

vEOSの起動

登録したvEOSをGNS3上で起動します。

SwitchのカテゴリからvEOSをドラッグ&ドロップで追加します。

launch_veos1

vEOSのアイコンを右クリックし、Startを選択して起動します。

launch_veos2

vEOSのアイコンをダブルクリックしてシリアルコンソール接続します。
ターミナルが起動しない場合は、GNS3・QEMU上でLinuxを起動する - #Console applicationsを参考にしつつ、GNS3が既定で呼び出すコンソールアプリケーションを設定してください。

(参考) Arista vEOSへのログイン

起動には数分かかります。

大量のsyslogメッセージが見えてきた頃にEnterキーを押すとログインプロンプトが出てきます。

adminユーザーでログインします。
パスワードは不要です。

ログイン後、以下のコマンドを実行してZTP (※) を停止します。
ZTPを停止しないとstartup-configを生成できないためです。

zerotouch cancel

zerotouch cancelを実行すると、vEOSが再起動します。
起動してきたら再びログインし、以下のコマンドを実行します。

enable
copy running-config startup-config

これでZTPが恒久的に停止します。

(参考) ZTPとは

ZTPとは、Zero Touch Provisioningの略語です。
LinuxでいうPXE Bootと似たような概念です。

ZTPを利用すれば、Aristaの管理ポートを接続して電源投入するだけでコンフィグ投入が自動的に完了します。
ZTPの原理は、専用のZTP用サーバからDHCPIPアドレスを受け取り、startup-configかスクリプトをダウンロードしてセットアップを行うというものです。

(参考) ZTPを無効化する方法

参考: YouTube - Networking Institute - Implementing Zero Touch Provisioning(ZTP) on Arista Switches
(※) 無料ユーザーではArista公式情報から詳細な情報を得られませんでした。Networking Instituteは、非公式ながらAristaの情報について正確かつ詳細に解説しているので、今回こちらを情報源とさせていただきました

Arista EOSの起動時、以下の2つの条件を満たせばZTPが開始されます。
(※) zerotouch cancelという例外パターンもありますが、この後説明します

  • /mnt/flash/startup-configが存在しないこと
  • /mnt/flash/zerotouch-configDISABLE=Trueと書かれていないこと

初期状態のArista EOSは、上記のどちらのファイルも存在しないためZTPを開始する条件が揃っています。

ZTPを停止する方法は大きく分けて2つあります。

  • zerotouch cancelを実行し、再起動後にcopy running-config startup-configを実行する
  • zerotouch disableを実行する

zerotouch cancelを実行すると、直後にEOSが再起動します。
そしてZTPが無効化された状態でEOSが起動します。

zerotouch cancelによるZTPの無効化は一時的なものです。
copy running-config startup-configによって/mnt/flash/startup-configを生成すれば、ZTPの無効化が永続的なものとなります。
startup-config生成前に再び再起動すると、ZTPが有効化されて起動してきます。

zerotouch disableによるZTPの有効化は永続的なものです。
このコマンドの実行により/mnt/flash/zerotouch-configDISABLE=Trueが書き込まれます。
これにより、startup-configの有無に関わらずZTPが永続的に無効化されます。

(任意) ZTPを予め無効化しておく

ZTPを使わない場合、毎回zerotouch cancelを実行するのは面倒だと思います。
そこで、本セクションでは予めZTPを無効化した上でテンプレート化するための手順を紹介します。

まず、~/GNS3/images/QEMU/配下にあるvEOSのvmdkファイルをコピーしておきます。

cd ~/GNS3/images/QEMU/
cp -pi vEOS64-lab-4.26.5M.vmdk vEOS64-lab-4.26.5M_zerotouch_disable.vmdk

続いて、GNS3を起動して設定画面を開きます (Ctrl+Shift+P)
QEMU VMsセクションにて、作成済みのvEOSの設定をコピーします。
新しいVMの名前を求められるので、vEOS (ZTP Disabled)としておきます。

copy_veos_vm_settings

続いてEditからvEOS (ZTP Disabled)の設定をカスタマイズします。

edit_veos_ztp_disabled1

General settingsタブで、Default name format{name}-{0}からvEOS-{0}に変更します。

edit_veos_ztp_disabled2

HDDタブで、HDBに先ほどコピー作成したvmdkファイルをセットします。
(※) vEOS64-lab-x.xx.xM_zerotouch_disable.vmdk

edit_veos_ztp_disabled3

Advancedタブで、Use as a linked base VMのチェックを外します。
これにより、GNS3上にVMを追加した際のVMクローン処理が無効化され、VMテンプレートを直接書き換えることができます。

edit_veos_ztp_disabled4

作成したvEOS (ZTP Disabled)をGNS3上で起動します。

launch_veos2

起動したvEOSにシリアルコンソールで接続し、adminユーザーでログインします。
そして以下のコマンドを実行することでZTPを恒久的に無効化します。

zerotouch disable

vEOSの再起動後、再びadminユーザーでログインします。
そして、以下のコマンドによってOSをシャットダウンします。

enable
bash
sudo shutdown -h now

vEOSをGNS3上で右クリックして削除します。
これによってvEOS (ZTP Disabled)はGNS3のトポロジ上からは消えますが、実際にはZTPが無効化された設定込のデータが~/GNS3/images/QEMU/vEOS64-lab-x.xx.xM_zerotouch_disable.vmdkに残っています。

delete_veos_on_gns3

最後に、vEOS (ZTP Disabled)の設定を開き、AdvancedタブからUse as a linked base VMを再び有効化します。

edit_veos_ztp_disabled5

以上の操作により、ZTPが無効化されたvEOSテンプレートを作成できました。

まとめ

Arista vEOSをGNS3上にQEMU VMとして追加する手順を紹介しました。
前回記事LinuxVPCSと組み合わせれば、vEOSを使った一通りのハンズオンができると思います。

参考サイト

ネットワークチェンジニアとして - Arista vEOSの基本的な使い方

Arista vEOSのダウンロード方法について、本ブログよりも更に丁寧に解説されています。
またGNS3ではありませんが、ESXiへのvEOS登録手順が解説されています。

vEOSのダウンロードとセットアップ手順を調べる際、大いに参考にさせていただきました。

記事内のリンクにvEOSでよく使いそうなMLAGやVXLAN、EVPNの解説もあります。
こちらは、GNS3セットアップ後の検証を行う上で大変役に立ちます。