Cisco Nexus9000v を KVM+GNS3 で動かす
最初に
やること/サマリ
本項では以下の話をします。
KVM+GNS3
環境でNexus9000v
を動かすところまで
話のポイントはこんなところ
GNS3
のMARKETPLACE
を使ったアプライアンスデプロイが楽Cisco Nexus 9000
シリーズの仮想版であるところのNexus9000v
は2017/08/16
現在、誰でもダウンロード可能なのでNX-OS
素振りが出来る- SW 版固有の機能制約はもちろんあり
- メモリ要件は Minimum 4GB, Recommended 8GB といういつも通りなやつ
まー Nexus9000v
のデプロイで UEFI
必須でタルかったので MARKETPLACE
に逃げた、というのが正直なところですが。
参考資料
思うに、こんなページをわざわざ見に来る人は、このリンクを見れば自分で問題なく出来そうだよね。
- Cisco Nexus 9000v 関連
- Cisco 公式 / Cisco Nexus 9000v Switch / Document
- Nexus9000全般のドキュメント
- Cisco だけあって、かなり豊富でしっかりしている
- Cisco 公式 / Cisco Nexus 9000v Switch / Download
- image ファイルダウンロードページ
- qcow2 など各種形式
2017/08/16
現在は個人アカウントでもダウンロード可能Download Options
をポチッて後は流れで
- Cisco 公式 / NX-OSv 9000 Guide
- Nexus9000v にフォーカスしたドキュメント
- HW版と比較した機能制限やリソース要件や各種Hypervisor向けのデプロイパラメータも書いてある
- Cisco 公式 / Cisco Nexus 9000v Switch / Document
- GNS3 関連
- GNS3 公式 / Cisco NX-OSv 9000 appliance
- GNS3 公式 / MARKETPLACE
- GNS3 公式 / Import GNS3 appliance
gns3a
形式のやつをインポートする、ESXi でいうところの ovf import 的な詳細手順- 画面キャプチャ満載で分かりやすい
環境情報
KVM 母艦と GNS3 は以下の感じで
$ uname -a Linux kvm01 4.4.0-79-generic #100-Ubuntu SMP Wed May 17 19:58:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS" $ virsh -v 1.3.1 $ qemu-system-x86_64 --version QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.14), Copyright (c) 2003-2008 Fabrice Bellard $ gns3 --version 2.0.2
Nexus9000v
は 2017/08/16
現在ダウンロード可能な最新の nxosv-final.7.0.3.I6.1.qcow2
で OVMF
は 2016/08/13
時点のビルド版ぽい(MARKETPLACE
で降ってきたのを使っただけ)
Nexus9000v デプロイ
Cisco サイトで OS ファイル取得
まあこの後のデプロイ手順は、ここで取得したファイルは使わないのですが…「俺は正当にこのファイルをダウンロードして使える権限を持っているんだな」って確認はしておきたいじゃないですか。
上記から qcow2 ファイルを取得(紐付いているのはハンペンAP1台だけの個人アカウントでも問題なく)して、チェックサムを確認
$ ll nxosv-final.7.0.3.I6.1.qcow2 -rw-r--r-- 1 kotetsu kotetsu 780402688 Aug 16 23:07 nxosv-final.7.0.3.I6.1.qcow2 $ sha512sum nxosv-final.7.0.3.I6.1.qcow2 93f2ffdcb230b3a0bcba4a120db4fcc752a1f91adfd911c9d11d3a725f0bbba7df40509ce896dcea45d33cbeacfa9fad9054678f91169ea1d684db8aadaa04cb nxosv-final.7.0.3.I6.1.qcow2
以下は 2017/08/16
時点でのダウンロード時画面キャプチャ
GNS3 の MARKETPLACE から Nexus9000v 用の テンプレートファイル取得
以下のリンクから DOWNLOAD TEMPLATE
をポチッて cisco-nxosv9k.gns3a
を取得します(完)
テンプレートファイルをインポート
いつも通り GNS3
の適当なプロジェクトを開いたら、先ほど取得した cisco-nxosv9k.gns3a
をインポートします。
GNS3
の File
-> Import appliance
を押して後は流れで…って感じですが、必要に応じて GNS3 公式 / Import GNS3 appliance に画面キャプチャ付の公式手順もございますので、そちらも合わせてご参照くださいませ。
これで GNS3
のテンプレートとして All devices
に Cisco NX-OSv 9000 7.0.3.I6.1
ができあがります。
手動でやる時には、以下あたりと睨めっこしながら試行錯誤して…というのがお決まりの流れだと思うんですが、そこをサボッたのがこの手順です。
- Cisco 公式 / NX-OSv 9000 Resource Requirements
- requirement 的なやつ
- Cisco 公式 / NX-OSv 9000 KVM-QEMU Support Information
- Cisco 公式 / NX-OSv 9000 NX-OSv 9000 Installation/Deployment
- 各種Hypervisor向けインストール時パラメータ詳説
KVM
版だとqemu-system-x86_64
に必要なパラメータが懇切丁寧に記載されている
ちゃんと動くお手本パラメータとして使う、ってのもありかもですね。
テンプレートからデプロイ~起動
いつも通りにテンプレート(all devices
)からD&Dでデプロイします。
なお、GNS3 MARKETPLACE
から取得したテンプレートは前述の公式パラメータに完全に沿ったものになっていますので、メモリを 4GB に減らすなり用途に応じたチューニングはお好きなように。
$ ps aux | grep [N]X-OS root 17924 12.7 1.1 9240844 367620 pts/12 Sl+ 02:26 0:05 /usr/bin/qemu-system-x86_64 -name CiscoNX-OSv90007.0.3.I6.1-1 -m 8096M -smp cpus=2 -enable-kvm -machine smm=off -boot order=c -bios /home/kotetsu/GNS3/images/QEMU/OVMF-20160813.fd -device ahci,id=ahci0,bus=pci.0 -drive file=/home/kotetsu/GNS3/projects/700/project-files/qemu/f8111e6a-9fd1-4f1b-9fd6-a3c9a42b0ff3/hda_disk.qcow2,if=none,id=drive-sata-disk0,index=0,media=disk -device ide-drive,drive=drive-sata-disk0,bus=ahci0.0,id=drive-sata-disk0 -uuid f8111e6a-9fd1-4f1b-9fd6-a3c9a42b0ff3 -serial telnet:127.0.0.1:5004,server,nowait -monitor tcp:127.0.0.1:54313,server,nowait -net none -device e1000,mac=00:21:96:0f:f3:00,netdev=gns3-0 -netdev socket,id=gns3-0,udp=127.0.0.1:10019,localaddr=0.0.0.0:10018 -device e1000,mac=00:21:96:0f:f3:01,netdev=gns3-1 -netdev socket,id=gns3-1,udp=127.0.0.1:10021,localaddr=0.0.0.0:10020 -device e1000,mac=00:21:96:0f:f3:02,netdev=gns3-2 -netdev socket,id=gns3-2,udp=127.0.0.1:10023,localaddr=0.0.0.0:10022 -device e1000,mac=00:21:96:0f:f3:03,netdev=gns3-3 -netdev socket,id=gns3-3,udp=127.0.0.1:10025,localaddr=0.0.0.0:10024 -device e1000,mac=00:21:96:0f:f3:04,netdev=gns3-4 -netdev socket,id=gns3-4,udp=127.0.0.1:10027,localaddr=0.0.0.0:10026 -device e1000,mac=00:21:96:0f:f3:05,netdev=gns3-5 -netdev socket,id=gns3-5,udp=127.0.0.1:10029,localaddr=0.0.0.0:10028 -device e1000,mac=00:21:96:0f:f3:06,netdev=gns3-6 -netdev socket,id=gns3-6,udp=127.0.0.1:10031,localaddr=0.0.0.0:10030 -device e1000,mac=00:21:96:0f:f3:07,netdev=gns3-7 -netdev socket,id=gns3-7,udp=127.0.0.1:10033,localaddr=0.0.0.0:10032 -device e1000,mac=00:21:96:0f:f3:08,netdev=gns3-8 -netdev socket,id=gns3-8,udp=127.0.0.1:10035,localaddr=0.0.0.0:10034 -device e1000,mac=00:21:96:0f:f3:09,netdev=gns3-9 -netdev socket,id=gns3-9,udp=127.0.0.1:10037,localaddr=0.0.0.0:10036 -nographic
んで、起動してコンソールを見守ると、以下のように ZTP ライクなものが走りだします
2017 Aug 16 17:29:15 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - USB Initializing Success 2017 Aug 16 17:29:15 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - USB disk not detected 2017 Aug 16 17:29:15 switch %$ VDC-1 %$ last message repeated 1 time 2017 Aug 16 17:29:15 switch %$ VDC-1 %$ %POAP-2-POAP_DHCP_DISCOVER_START: [90SNLUQJ25I-00:21:96:0F:F3:07] - POAP DHCP Discover phase started 2017 Aug 16 17:29:16 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - Invalid DHCP OFFER from 0.0.0.0: Missing Script Server information 2017 Aug 16 17:29:16 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - Invalid DHCP OFFER from 0.0.0.0: Missing Script Name 2017 Aug 16 17:29:20 switch %$ VDC-1 %$ %ASCII-CFG-2-CONF_CONTROL: System ready 2017 Aug 16 17:29:20 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - Invalid DHCP OFFER from 0.0.0.0: Missing Script Server information 2017 Aug 16 17:29:20 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - Invalid DHCP OFFER from 0.0.0.0: Missing Script Name 2017 Aug 16 17:29:26 switch %$ VDC-1 %$ %POAP-2-POAP_FAILURE: [90SNLUQJ25I-00:21:96:0F:F3:07] - POAP DHCP discover phase failed 2017 Aug 16 17:29:38 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - USB Initializing Success 2017 Aug 16 17:29:38 switch %$ VDC-1 %$ %POAP-2-POAP_INFO: [90SNLUQJ25I-00:21:96:0F:F3:07] - USB disk not detected
ひたすらループするので、以下の出力で y
して止めて
Abort Auto Provisioning and continue with normal setup ?(yes/no)[n]: y Disabling POAP
admin
ユーザ用のパスワード設定とかを対話でやると、初期ログイン可能になります。
Abort Auto Provisioning and continue with normal setup ?(yes/no)[n]: y Disabling POAP ---- System Admin Account Setup ---- Do you want to enforce secure password standard (yes/no) [y]: Enter the password for "admin": Wrong Password, Reason: [Length should be at least 8 characters] Invalid admin password. Enter the password for "admin": Confirm the password for "admin": ---- Basic System Configuration Dialog VDC: 1 ---- This setup utility will guide you through the basic configuration of the system. Setup configures only enough connectivity for management of the system. Please register Cisco Nexus9000 Family devices promptly with your supplier. Failure to register may affect response times for initial service calls. Nexus9000 devices must be registered to receive entitled support services. Press Enter at anytime to skip a dialog. Use ctrl-c at anytime to skip the remaining dialogs. Would you like to enter the basic configuration dialog (yes/no): 2017 Aug 16 17:33:45 switch %$ VDC-1 %$ %ACLQOS-SLOT1-2-ACLQOS_FAILED: ACLQOS failure: TCAM region is not configured for feature QoS class IPv4 direction ingress. Please configure TCAM region Ingress COPP [copp] and retry the command. Error: There was an error executing atleast one of the command Please verify the following log for the command execution errors. TCAM region is not configured. Please configure TCAM region and retry the command User Access Verification User Access Verification login: admin Password: Cisco NX-OS Software Copyright (c) 2002-2017, Cisco Systems, Inc. All rights reserved. NX-OSv9K software ("NX-OSv9K Software") and related documentation, files or other reference materials ("Documentation") are the proprietary property and confidential information of Cisco Systems, Inc. ("Cisco") and are protected, without limitation, pursuant to United States and International copyright and trademark laws in the applicable jurisdiction which provide civil and criminal penalties for copying or distribution without Cisco's authorization. Any use or disclosure, in whole or in part, of the NX-OSv9K Software or Documentation to any third party for any purposes is expressly prohibited except as otherwise authorized by Cisco in writing. The copyrights to certain works contained herein are owned by other third parties and are used and distributed under license. Some parts of this software may be covered under the GNU Public License or the GNU Lesser General Public License. A copy of each such license is available at http://www.gnu.org/licenses/gpl.html and http://www.gnu.org/licenses/lgpl.html *************************************************************************** * NX-OSv9K is strictly limited to use for evaluation, demonstration * * and NX-OS education. Any use or disclosure, in whole or in part of * * the NX-OSv9K Software or Documentation to any third party for any * * purposes is expressly prohibited except as otherwise authorized by * * Cisco in writing. * *************************************************************************** switch# switch# show ver Cisco Nexus Operating System (NX-OS) Software TAC support: http://www.cisco.com/tac Documents: http://www.cisco.com/en/US/products/ps9372/tsd_products_support_serie s_home.html Copyright (c) 2002-2017, Cisco Systems, Inc. All rights reserved. The copyrights to certain works contained herein are owned by other third parties and are used and distributed under license. Some parts of this software are covered under the GNU Public License. A copy of the license is available at http://www.gnu.org/licenses/gpl.html. NX-OSv9K is a demo version of the Nexus Operating System Software BIOS: version NXOS: version 7.0(3)I6(1) BIOS compile time: NXOS image file is: bootflash:///nxos.7.0.3.I6.1.bin NXOS compile time: 5/16/2017 22:00:00 [05/17/2017 06:21:28] Hardware cisco NX-OSv Chassis with 8062148 kB of memory. Processor Board ID 90SNLUQJ25I Device name: switch bootflash: 3509454 kB Kernel uptime is 0 day(s), 19 hour(s), 48 minute(s), 5 second(s) Last reset Reason: Unknown System version: Service: plugin Core Plugin, Ethernet Plugin Active Package(s):
ほい、お疲れ様でしたー。
bootイメージ設定
Cisco 公式 / Troubleshooting the NX-OSv 9000 / How to prevent VM from dropping into “loader >” prompt にあるように、起動イメージを忘れずに設定しないと次回起動時に loader
で止まってしまいますよ、って話
初期状態は以下なので
switch# show boot Current Boot Variables: sup-1 NXOS variable not set No module boot variable set Boot Variables on next reload: sup-1 NXOS variable not set No module boot variable set switch# dir bootflash: 4096 Aug 16 17:27:42 2017 .rpmstore/ 4096 Aug 16 17:27:53 2017 .swtam/ 38575 Aug 16 17:32:16 2017 20170816_172847_poap_26000_init.log 759941120 May 17 06:46:25 2017 nxos.7.0.3.I6.1.bin 0 Aug 16 17:35:04 2017 platform-sdk.cmd 4096 Aug 16 17:28:44 2017 scripts/ 4096 Aug 16 17:28:45 2017 virt_strg_pool_bf_vdc_1/ 4096 Aug 16 17:28:06 2017 virtual-instance/ 59 Aug 16 17:27:57 2017 virtual-instance.conf Usage for bootflash://sup-local 1158098944 bytes used 2379120640 bytes free 3537219584 bytes total
以下のように boot イメージを指定しておきましょう。
switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# switch(config)# boot nxos nxos.7.0.3.I6.1.bin Performing image verification and compatibility check, please wait.... switch(config)# switch(config)# end switch# switch# copy running-config startup-config [########################################] 100% Copy complete.
そーいや copy run start
はその内なくなる、みたいな話を IOS
時代に見たような気もするんですが、どうなんでしたっけ…。
ともかく、これで再起動してもちゃんと OS が読み込まれます。reload
でも実行して、動作確認しておきましょう。
switch# show boot Current Boot Variables: sup-1 NXOS variable = bootflash:/nxos.7.0.3.I6.1.bin No module boot variable set Boot Variables on next reload: sup-1 NXOS variable = bootflash:/nxos.7.0.3.I6.1.bin No module boot variable set
完
お手軽手順に逃げてインストールしただけなので、別に…
仮想版をユーザ制限なくダウンロードさせてもらったから言うわけじゃないですが、Nexus9000 はデータセンタスイッチとしてはなかなか良さげですよ!!