VMware FusionでNexus 9000vを使う

2023年12月13日

Nexus単体の動作確認をしたい、例えば管理プロトコルやSmart Licenseの動作確認、コマンド体型の確認などあると思います。そんなときにNexus 9000vを動作させて確認することができます。

手持ちのMacbookでNexusのコマンドを確認したいと思っていたところ、VMware Fusionに対応しているようなのでVMware Fusion上でNexus 9000vを構築してみました。が、いくつかはまりポイントもあったので、Vmware FusionのセットアップからNexus9000vを動かすところまでの手順をメモする目的でこの記事を作成しました。

VMware Fusionをセットアップ

こちらの記事が参考になりました。ダウンロードからフリーライセンスキーの入手方法までわかりやすく解説されています。

https://softantenna.com/blog/vmware-fusion-player-13-free-personal-use-license/

Nexus 9000vをダウンロード

以下Ciscoのソフトウェアダウンロードページから、Nexus 9000vをダウンロードしましょう。

https://software.cisco.com/

対象ファイルの形式はOVAとなります。


現在(23/12時点)Nexus9000vではボックスモデルかシャーシモデル、要求スペックが低い機能限定イメージと、通常イメージがあります。今回はボックスかつ機能限定イメージを選択します(バージョンは10.2.4Mを選択しています)。

VMware Fusionでイメージのimport

VMware FusionでNexus 9000vのOVAイメージのImportを行います。Choose FileからダウンロードしたOVAファイルを選択しましょう。

ContinueからImportを進めてください。Importが完了すると以下の画面となります。

ここからVMware Fusion上でいくつか設定をしていくのでVMは停止したままにしてください。もしスタートしてしまったら一度VMをShutdownしてください。

コンソール設定

Vmware FusionでConsoleの設定を行います。この設定をしないとコンソールアクセスができないので、必ずこの設定が必要となります。

まずスパナアイコンから設定画面を開いて、

Add Deviceを選択します。

ここでSerial Portを選択して、

Serialを出力するファイルを作成します。ファイル名は“Serial0"とします。このファイルの絶対パスはコンソールアクセスの際に利用します。

次にVirtual Machinesフォルダに移動します。Spotlight上で"Virtual Machines"と検索すると出てくると思います。

フォルダを開くと、ImportしたイメージのVMファイルが存在します。

そして対象となるファイルを右クリックします。ここでShow Package Contentsを選択します。

このなかで vmxファイルをテキストエディタで開き、serial0.fileType = “file"とあるので

serial0.fileType = “pipe"と変更してセーブします。

Network Adapterの設定

次にVmware FusionでNetwork Adapterの設定を行います。

Nexus9000vのOVAをImportした際にNetwork Adapter(N9Kv上のIF)はデフォルトで6つあり、mgmt0とEth1/1-Eth1/5とマッピングされているようです。

Nexus9000vでコマンドの確認だけを行いたいのであれば、デフォルトの設定で問題ありません。

もしSmart licensing認証の動作確認などmgmt0経由でインターネットにアクセスしたい場合、通常の宅内WIFI環境においての話となりますが、Network Adaptor1 をNAT設定することでmgmt0経由でインターネットへ通信できます。

注意点となりますが、上記同様の環境においてNetwork Adapter2-6をEnableにしておくとBridge設定の関係からかインターネットへの通信が不安定となる挙動がみられました。もしmgmt0以外のInterfaceを使用しないのであれば、Disconnect Network Adapterでmgmt0だけ有効にしておくのもよいかと思います。

Nexus9000vの起動

ここまで完了したらVMを立ち上げてみましょう。

VM立ち上げ途中で、以下ポップアップで上がりますがYesにしましょう。

さらに同様に以下のようなポップアップも上がります。これはNetwrok Adapterの認証ですのでユーザのパスワードを入力します。

VMが立ち上がるとVMware Fusionの画面のコンソール上でboot processが進んでいき、初回起動時は“Boot Time"という表示で止まると思います。もしくは一度VMを立ち上げたことがあると、以下のようにboot loaderで止まる場合もあります。この場合には、

“dir" からbootイメージ名を確認して “boot イメージ名" と入力してNXOSを立ち上げます。その後にprocessが続くと初回起動時同様に“Boot Time"で止まります。

コンソールアクセス

“Boot Time"以降はsocatコマンドを利用して続くコンソールを表示することができます。

MAC上で以下コマンドによりsocatをインストールできます。

brew install socat

Source: https://formulae.brew.sh/formula/socat

socatコマンドの起動オプションとして以下2つ挙げます。好みで使ってください。

1. stdio経由

socat -d0 -d unix-connect:/Users/xxx/Downloads/Serial0 stdio
## unix-connect:以降には先程作成したSerial0ファイルの絶対パスを含めて入力してください。

コマンドはシンプルなのですが、stdio経由だと入力コマンドが一旦バッファへ入るので色々と違和感のあるコンソールアクセスとなります。

2. pty経由

socat -d -d unix-connect:/Users/xxx/Downloads/Serial0 pty
## unix-connect:以降には先程作成したSerial0ファイルの絶対パスを含めて入力してください。

この入力後、以下のようなログが出力されたあとに

$ socat -d -d unix-connect:/Users/xxx/Downloads/Serial0 pty
2023/12/10 15:22:29 socat[29081] N opening connection to LEN=34 AF=1 "/xxx/Serial0"
2023/12/10 15:22:29 socat[29081] N successfully connected from local address LEN=16 AF=1 ""
2023/12/10 15:22:29 socat[29081] N PTY is /dev/ttys001
2023/12/10 15:22:29 socat[29081] N starting data transfer loop with FDs [5,5] and [6,6]

このログに出力される“ttys001"を使って(環境によって数値部分は変わります)、ターミナルを新たに開いて以下screenコマンドでコンソールアクセスしてください。自然なコンソールアクセスを行うことができると思います。

screen /dev/ttys001

socatでエラーとなる、もしくはコンソールが正しく表示されない場合

環境構築していたときにsocatでコンソールアクセスがエラーとなる、もしくは正しくコンソール上で正しくメッセージが表示されないことがありました。手順の中でvmxファイルの中の”pipe”と変更するオペレーションが"file"のままであったり、純粋にコンソールがおかしい状態のためVMをrebootすることで正常にアクセスできたケースがありました。今一度手順を見直して、もしうまく動作しなければVMもしくはPCをrebootしてみてください。

Nexus 9000vの設定

しばらくするとNexus9000vでPOAPが動き始めます。POAP以降の初期設定はこちらを参照してください。

初期設定が完了したあと、もしmgmt0経由でSSHさせたい場合やインターネットアクセスさせたい場合には、mgmt0にDHCP設定をすると簡単です。

以下はNetwork AdapterをNATにして、mgmt0でIPアドレスをDHCP経由で取得しInternetアクセスまで確認しているログとなります。もちろんMacbookからSSHも可能です。

switch# conf t
Enter configuration commands, one per line. End with CNTL/Z.
switch(config)# int mgmt 0
switch(config-if)# ip address dhcp
switch(config-if)# no shut
switch(config-if)# end
switch# 
switch# show ip int bri vrf management 

IP Interface Status for VRF "management"(2)
Interface            IP Address      Interface Status
mgmt0                192.168.196.132 protocol-up/link-up/admin-up       
switch# 
switch# ping 8.8.8.8 vrf management 
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=127 time=29.772 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=127 time=30.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=127 time=28.123 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=127 time=27.465 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=127 time=27.975 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 27.465/28.827/30.8 ms
switch# 

まとめ

上記の通り動作させるまでいくつか癖がありましたので、VMware Fusion上でNexus9000vを安定稼働させるまで一日かかってしまいました。とはいえ一度構築すればあとは簡単にアクセスできますので、1台環境でのNexusの動作確認などにぜひ活用してみてください。

なおコンソールアクセスはsocatコマンド以外にtelnetも利用できるようです。以下サイトをご参考いただければと思います。

https://binarynature.blogspot.com/2019/02/cisco-nexus-9000v-vagrant-box-vmware-fusion.html

参考サイト

https://softantenna.com/blog/vmware-fusion-player-13-free-personal-use-license/

https://covirtnetworking.com/deploying-nexus-9000v-vmware-fusion/

https://qiita.com/propella/items/418e0886b53ee144321e

https://binarynature.blogspot.com/2019/02/cisco-nexus-9000v-vagrant-box-vmware-fusion.html