目錄

簡介

必要條件

採用元件

背景資訊

解決方案

簡介

本文介紹使用HTTP伺服器重新映像Cisco Nexus儀表板節點的步驟，提供清晰的逐步指導，確保通過遠端HTTP託管映像部署進行標準化和高效的節點重新映像。

必要條件

1. 必須使用OOB IP地址配置Cisco整合管理控制器(CIMC)。

2. 檢查Nexus Dashboard Release（Nexus控制面板版本）說明，並確認需要重新映像的Nexus控制面板軟體映像。

3. 從software.cisco.com獲取軟體映像。

4. 確認映像的MD5總和檢查碼與Cisco.com上發佈的校驗碼匹配。

5. 在HTTP伺服器上上傳Nexus儀表板映像。

6. 必須可以從CIMC管理介面訪問HTTP伺服器。可以使用CIMC GUI或CLI驗證此連通性。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

背景資訊

當Cisco Nexus Dashboard節點由於系統損壞、不支援的更新或無法訪問的GUI而發生故障時，管理員可以使用HTTP伺服器上託管的ISO重新映像該節點。該過程包括下載Nexus Dashboard ISO，將其託管在Web伺服器上，並使用CIMC（思科整合管理控制器）通過HTTP對映和引導ISO。這可實現高效的遠端節點恢復或重新安裝，作為群集恢復的一部分。

解決方案

要通過HTTP伺服器執行ND重新映像，需要執行以下步驟：

步驟1.從思科網站下載韌體。

開啟software.cisco.com/download。

步驟2.訪問Nexus Dashboard介面並從可用版本選項中選擇適當的軟體版本(例如3.2(2m))。

舉例來說：

步驟3.將Nexus Dashboard軟體ISO映像複製到HTTP伺服器。

示例： http://x.x.x.x/iso/

步驟4.通過SSH/控制檯連線到思科整合管理控制器。

- 從終端視窗登入到CIMC控制檯。

# ssh admin@cimc_ip

其中cimc_ip是CIMC IP地址。

舉例來說：

# ssh admin@x.x.x.x

admin@x.x.x.x's password:

system#

- 將範圍更改為虛擬介質：

system# scope vmedia

system /vmedia #

- 將.iso映像對映到HTTP伺服器。

system /vmedia # map-www volume_name http://http_server_ip_and_path iso_file_name

其中：

- volume_name是卷的名稱。

- http_server_ip_and_path是HTTP伺服器的IP地址和.iso檔案位置的路徑。

- iso_filename是.iso檔案的名稱。

附註：http_server_ip_and_path與iso_filename之間存在空格。
舉例來說：

system /vmedia # map-www apic http://x.x.x.x/iso/ nd-dk9.3.2.2m.iso

Server username: admin

Server password:

Confirm password:

附註：輸入憑證並按Enter鍵。

- 檢查對映狀態：

system /vmedia # show mappings detail

The Map-Status must be shown as OK.

For Example:

system /vmedia # show mappings detail

Volume apic:

Map-Status: OK

Drive-Type: CD

Remote-Share: http://x.x.x.x/iso/

Remote-File:nd-dk9.3.2.2m.iso

Mount-Type: www

Mount-Options: noauto,username=admin,password=********3

system /vmedia #

如果對映失敗或在對映過程中出現錯誤，可以使用unmap命令刪除現有對映，然後再次嘗試對映。

Server # scope vmedia

Server /vmedia # show mappings

Volume  Map-status   Drive-type     remote-share        remote-file                mount-type

------  ----------  ------------  ------------------- -------------------        -----------

Huu     OK           removable    http://x.x.x.x/ rhel-server-6.1-x86_6.iso      www

Server /vmedia # unmap Huu

Server /vmedia # show mappings

Volume  Map-status   Drive-type     remote-share        remote-file                mount-type

------  ----------  ------------  ------------------- -------------------        -----------

- 連線到SOL以監控安裝過程：

system /vmedia # connect host

CISCO Serial Over LAN:

Press Ctrl+x to Exit the session

步驟5.從CIMC GUI的KVM控制檯重新通電。

Choose Power > Power Cycle System (cold boot) to power cycle the controller.

在SOL控制檯上：在引導過程中觀看螢幕，並準備在適當的時間按F6鍵以進入引導選擇選單。

舉例來說：

您還必須輸入BIOS密碼。預設密碼為password。

在啟動選擇選單中，選擇Cisco CIMC對映的vDVD2.00選項作為一次性啟動裝置。

步驟6.返回CIMC CLI並監控Connect Host的輸出。

監控CIMC cli ，當收到以下消息時：要加速安裝，請在接下來的10分鐘內輸入iso url，然後輸入帶有Nexus控制面板映像的http伺服器URL。

Boot000A* UEFI: Cisco CIMC-Mapped vDVD2.00 PciRoot(0x1)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/USB(2,0)/Unit(3)/CDROM(1,0x35,0x5597ed)..BO'

+ return 1

+ '[' -n '' ']'

++ mount

++ grep /run/install/repo

++ cut -f 1 -d ' '

++ tr -d '[:digit:]'

++ true

+ usbdevice=

+ mkdir /mnt/usbdata

+ '[' -n '' ']'

+ '[' true = true ']'

+ read_iso_url

+ dmesg --console-off

+ true

+ echo 'To speed up the install, enter iso url. Type '\''skip'\'' to use local media:'

To speed up the install, enter iso url. Type 'skip' to use local media:

+ echo ' Either http://server/path/to/file or nfs:server:/path/to/file are supported'

Either http://server/path/to/file or nfs:server:/path/to/file are supported

+ read -r -p '? ' url

http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso << Enter the http server details  >>

+ '[' http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso = skip ']'

+ '[' http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso = '' ']'

+ '[' http = nfs: ']'

+ echo http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso

+ grep -q '\[.*\]'

++ awk -F '/|:' '{print $4}'

+ urlip=x.x.x.x197.204.4

+ '[' -z x.x.x.x197.204.4 ']'

+ break

+ dmesg --console-on

+ '[' -n http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso ']'

+ '[' http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.1i.iso '!=' skip ']'

+ dmesg --console-of

步驟 7.  輸入HTTP URL後，引導過程將繼續。

附註：選擇static選項，系統將要求您輸入介面名稱、管理IP地址和網關。

+ set +e

+ configured=0

+ interface=none

+ addr=none

+ gw=none

+ '[' 0 -eq 0 ']'

+ echo 'Configuring network interface'

Configuring network interface

+ echo 'type static, dhcp, bash for a shell to configure networking, or url to re-enter the url: '

type static, dhcp, bash for a shell to configure networking, or url to re-enter the url:

+ read -p '? ' ntype

? static << Enter the static  to configure the networking >>

+ case $ntype in

+ configure_static

+ '[' none '!=' none ']'

附註：在鍵入靜態命令後，它將列出CIMC介面，選擇正確的介面。如果您選擇了錯誤的介面，則資料包丟失率將為100%，然後，在三次嘗試執行ping失敗後，它會再次要求選擇正確的介面，直到資料包丟失為0（如果您不知道介面），請依次選擇所有介面。

例如

+ echo 'Available interfaces'

Available interfaces

+ ls -l /sys/class/net

total 0

lrwxrwxrwx 1 root root 0 Aug 12 03:53 eno5 -> ../../devices/pci0000:40/0000:40:03.1/0000:46:00.0/0000:47:01.0/0000:49:00.0/0000:4a:00.0/0000:4b:00.0/net/eno5

lrwxrwxrwx 1 root root 0 Aug 12 03:53 eno6 -> ../../devices/pci0000:40/0000:40:03.1/0000:46:00.0/0000:47:01.0/0000:49:00.0/0000:4a:00.0/0000:4b:00.1/net/eno6

lrwxrwxrwx 1 root root 0 Aug 12 03:53 enp1s0f0 -> ../../devices/pci0000:00/0000:00:01.1/0000:01:00.0/net/enp1s0f0

lrwxrwxrwx 1 root root 0 Aug 12 03:53 enp1s0f1 -> ../../devices/pci0000:00/0000:00:01.1/0000:01:00.1/net/enp1s0f1

lrwxrwxrwx 1 root root 0 Aug 12 03:51 lo -> ../../devices/virtual/net/lo

+ read -p 'Interface to configure: ' interface

Interface to configure: enp1s0f0        <<  select the correct interface   >>

+ read -p 'address: ' addr

附註：ND-NODE-L4需要格式為enp1s0fX的介面名稱，其中X是數字識別符號。SE-NODE-G2需要enoX格式，其中X是數字。

步驟8.  正確的介面檢查。

進入介面後，它將嘗試ping http伺服器，如果選定的介面正確，則資料包丟失率必須為0%，並開始從http伺服器提取映像。

舉例來說：在進入正確介面時出現0%的資料包丟失後。

Interface to configure: enp1s0f0

+ read -p 'address: ' addr

address: x.x.x.x/24

+ read -p 'gateway: ' gw

gateway:x.x.x.x

+ ip addr add x.x.x.x/24 dev enp1s0f0

+ ip link set enp1s0f0 up

+ ip route add default via x.x.x.x

++ seq 1 6

+ for count in $(seq 1 6)

+ ping -c 1 x.x.x.x

PING x.x.x.x (x.x.x.x): 56 data bytes

---x.x.x.x ping statistics ---

1 packets transmitted, 0 packets received, 100% packet loss

+ sleep 20

+ for count in $(seq 1 6)

+ ping -c x.x.x.x

PING x.x.x.x (x.x.x.x): 56 data bytes

64 bytes from x.x.x.x : seq=0 ttl=63 time=0.512 ms

---x.x.x.x ping statistics ---

1 packets transmitted, 1 packets received, 0% packet loss

round-trip min/avg/max = 0.512/0.512/0.512 ms

+ configured=1

+ break

+ '[' 1 -eq 0 ']'

+ set -e

+ tmpiso=/tmp/cdrom.iso

+ echo 'Fetching http://x.x.x.x/iso/DCApps/ND/nd-dk9.3.2.2f.iso to /tmp/cdrom.iso'

Fetching http://x.x.x.x/iso/DCApps/ND/nd-dk9.3.2.2f.iso to /tmp/cdrom.iso >> started fetching the apic image from HTTP server

+ '[' http = nfs: ']'

+ download http://x.x.x.x/iso/DCApps/ND/nd-dk9.3.2.2f.iso /tmp/cdrom.iso

+ local url=http://x.x.x.x/iso/DCApps/ND/nd-dk9.3.2.2f.iso dest=/tmp/cdrom.iso tries=5

+ wget --server-response --no-check-certificate --tries=5 --progress=dot:mega --read-timeout=60 --output-document=/tmp/cdrom.iso.tmp http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.2f.iso

--2025-08-12 09:39:08-- http://x.x.x.x197.204.4/iso/DCApps/ND/nd-dk9.3.2.2f.iso

Connecting to x.x.x.x:80... connected.

HTTP request sent, awaiting response...

HTTP/1.1 200 OK

Date: Tue, 12 Aug 2025 09:39:09 GMT

Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_wsgi/3.4 Python/2.7.5

Last-Modified: Tue, 10 Jun 2025 06:51:41 GMT

ETag: "2c66bd000-6373220f3b940"

Accept-Ranges: bytes

Content-Length: 11918888960

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: application/octet-stream

Length: 11918888960 (11G) [application/octet-stream]

Saving to: '/tmp/cdrom.iso.tmp'

如果您選擇了錯誤的介面，則資料包丟失率將為100%，在三次嘗試ping失敗後，它會再次要求選擇正確的介面。

舉例來說：進入錯誤介面後出現100%資料包丟失。

+ read -p 'Interface to configure: ' interface

Interface to configure: enp11s0

+ read -p 'address: ' addr

address: x.x.x.x/24

+ read -p 'gateway: ' gw

gateway: x.x.x.x

+ ip addr add x.x.x.x/24 dev enp11s0

+ ip link set enp11s0 up

+ ip route add default via x.x.x.x

++ seq 1 2

+ for count in '$(seq 1 2)'

+ ping -c 1 x.x.x.x

PING x.x.x.x (x.x.x.x) 56(84) bytes of data.

From x.x.x.x icmp_seq=1 Destination Host Unreachable

--- x.x.x.x ping statistics ---

1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

+ sleep 20

+ for count in '$(seq 1 2)'

+ ping -c 1 x.x.x.x

PING x.x.x.x (x.x.x.x) 56(84) bytes of data.

From x.x.x.x icmp_seq=1 Destination Host Unreachable

--- x.x.x.x ping statistics ---

1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

+ sleep 20

+ '[' 0 -eq 0 ']'

+ echo 'Configuring network interface'

Configuring network interface

+ echo 'type static, dhcp, bash for a shell to configure networking, or url to re-enter the url: ' <

>

type static, dhcp, bash for a shell to configure networking, or url to re-enter the url:

+ read -p '? ' ntype

?

保持監控CIMC CLI並等待約40-50分鐘，您將在cli上獲得以下輸出。

+ log 'Shutting down Atomix Installer'

+ echo 'Shutting down Atomix Installer'

Shutting down Atomix Installer

+ log 'reboot: Power down'

+ echo 'reboot: Power down'

reboot: Power down

+ sleep 5

+ poweroff

+ ec[  533.195532] sysrq: Emergency Sync

ho s

[  533.195563] sysrq: Emergency Sync

[  533.212106] sysrq: Emergency Sync

[  533.212117] sysrq: Emergency Remount R/O

[  533.212189] sysrq: Power Off

[  533.212226] kvm: exiting hardware virtualization

[  533.213874] EXT4-fs (sdf1): re-mounted. Opts: (null). Quota mode: none.

[  533.215431] sd 1:0:0:0: [sdf] Synchronizing SCSI cache

[  533.215749] EXT4-fs (dm-3): re-mounted. Opts: (null). Quota mode: none.

[  533.216395] EXT4-fs (dm-1): re-mounted. Opts: (null). Quota mode: none.

[  533.217221] EXT4-fs (sdf6): re-mounted. Opts: (null). Quota mode: none.

[  533.217689] EXT4-fs (sdf4): re-mounted. Opts: (null). Quota mode: none.

[  533.218965] Emergency Remount complete

[  533.218997] Emergency Sync complete

[  533.218997] Emergency Sync complete

[  533.219002] Emergency Sync complete

[  533.359024] sd 1:0:0:0: [sdf] Stopping disk

+ echo s

+ echo s

+ echo u

+ echo o

+ log 'Nap time'

+ echo 'Nap time'

Nap time

+ true

+ sleep 60

[  535.571545] megaraid_sas 0000:41:00.0: megasas_disable_intr_fusion is called outbound_intr_mask:0x40000009

[  535.692202] ACPI: PM: Preparing to enter system sleep state S5

[  535.706849] reboot: Power down

步驟9.  關閉電源後退出SOL

等待，直到您在SOL控制檯中看到消息關閉，然後按下Ctrl和x(Ctrl+x)從SOL退出，然後再次登入CIMC並再次更改範圍。

(i) Change the scope to virtual media again:

system# scope vmedia

system /vmedia #

(ii) Unmap the .iso image that you mapped in 2.c:

system /vmedia # unmap volume_name

At the Save mapping prompt, enter yes if you want to save the mapping or no if you do not want to save the mapping. For example:

system /vmedia # unmap apic

Save mapping? Enther 'yes' or 'no' to confirm (CTRL-C to cancel) → yes

system /vmedia #

(iii) Connect back to SOL again:

system /vmedia #  connect host

關閉電源後，您需要使用KVM重新開啟系統電源，然後繼續執行後續步驟。

步驟x.x.x.x首次啟動設定

[  274.210045] nd_bootstrap.sh[2628]:   INFO[0174] bootDisk: found disk=/dev/sdf bootPart=/dev/sdf4 espPart=/dev/sdf3

[  274.224041] nd_bootstrap.sh[2628]:   INFO[0174] boot devices/filesystems have been mounted

[  274.236038] nd_bootstrap.sh[2628]:   INFO[0174] |12231-start| ["expand-stub.bash" "/boot/efi/EFI/atx-current/kernel.efi"]

[  274.251228] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 21870+1 records in

[  274.262061] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 21870+1 records out

[  274.272065] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 11197856 bytes (11 MB, 11 MiB) copied, 0.0716082 s, 156 MB/s

[  274.287060] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 0+1 records in

[  274.297060] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 0+1 records out

[  274.307049] nd_bootstrap.sh[2628]:   INFO[0174] |12231-out  | 187 bytes copied, 7.2325e-05 s, 2.6 MB/s

[  274.566030] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 102375+1 records in

[  274.576055] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 102375+1 records out

[  274.588059] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 52416297 bytes (52 MB, 50 MiB) copied, 0.329377 s, 159 MB/s

[  274.604075] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 0+1 records in

[  OK  ] Finished atomix-boot-setup.

[  274.615055] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 0+1 records out

Starting Initial cloud-init job (pre-networking)...

[  274.634046] nd_bootstrap.sh[2628]:   INFO[0175] |12231-out  | 82 bytes copied, 9.4287e-05 s, 870 kB/s

[  274.656064] nd_bootstrap.sh[2628]:   INFO[0175] |12231-exit | rc=0

[  274.666047] nd_bootstrap.sh[2628]:   INFO[0175] Boot()                    duration=175321

[  274.837851] cloud-init[12253]: Cloud-init v. 24.1.3-0ubuntu1~22.04.5 running 'init-local' at Tue, 12 Aug 2025 09:53:39 +0000. Up 274.82 seconds.

Press any key to run first-boot setup on this console...

Starting Nexus Dashboard setup utility

Welcome to Nexus Dashboard 3.2.2f

Press Enter to manually bootstrap your first master node..

步驟11.配置Nexus Dashboard管理介面的管理員密碼和管理網路

Starting Nexus Dashboard setup utility

Welcome to Nexus Dashboard 3.2.2f

Press Enter to manually bootstrap your first master node...

Admin Password:

Reenter Admin Password:

Management Network:

IP Address/Mask: x.x.x.x/24

Gateway: x.x.x.x

重新輸入config?(y/N):否

System configured successfully

Initializing System on first boot. Please wait..

[  OK  ] Listening on Network Service Netlink Socket.

[  OK  ] Finished Initial cloud-init job (pre-networking).

[  OK  ] Reached target Preparation for Network.

Starting Network Configuration...

[  OK  ] Started Network Configuration.

[  OK  ] Reached target Network.

Starting Wait for Network to be Configured...

步驟12. Nexus儀表板節點已準備登入。您可以使用其餘配置的管理介面IP登入到ND GUI

在控制檯上：

Ubuntu 22.04.4 LTS localhost ttyS0

#    # #### #   # #    # #####    #####    #   ##### #   # #####   ###    #   #####  #####

# #  # #     # #  #    # #        #    # #   # #     #   # #    # #   # #   # #    # #    #

#  # # ###    #   #    # #####    #    # ##### ##### ##### #####  #   # ##### #####  #    #

#    # #     # #  #    #     #    #    # #   #     # #   # #    # #   # #   # #    # #    #

#    # #### #   #  ####  #####    #####  #   # ##### #   # #####   ###  #   # #    # #####

System initialized successfully

[  564.309561] cloud-init[12560]: Cloud-init v. 24.1.3-0ubuntu1~22.04.5 running 'modules:final' at Tue, 12 Aug 2025 09:58:28 +0000. Up 564.27 seconds.

ci-info: no authorized SSH keys fingerprints found for user ubuntu.

<14>Aug 12 09:58:29 cloud-init: #############################################################

<14>Aug 12 09:58:29 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----

<14>Aug 12 09:58:29 cloud-init: 256 SHA256:vKu7Zj3MAP+vFOXaeW14HClEhAwrSpA9AqcUC4SZVlU root@localhost (ECDSA)

<14>Aug 12 09:58:29 cloud-init: 256 SHA256:I7eiUnQq6pZsoFPy+UxIUQ66jQOgHyG4zGuF6cAtSl0 root@localhost (ED25519)

<14>Aug 12 09:58:29 cloud-init: 3072 SHA256:SvodRIEgWzEAaQQdH2rlw0qLziBbv0e88VAGkt/ox14 root@localhost (RSA)

<14>Aug 12 09:58:29 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----

<14>Aug 12 09:58:29 cloud-init: #############################################################

-----BEGIN SSH HOST KEY KEYS-----

ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBf9S1BXcR48cWcIKhvfjLGYufJgycGIf1Yx8OpRsk4e1I+y80J/x5dfX90h+3cwt9kjH8IubMpleK66mlW+xd0= root@localhost

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGWTN7hoB2/dYSVA0gpV88FWh2iRD2hwJ2LMryhhhQHg root@localhost

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCeM+In/dciDwCKEPLV/97oIA5pHHRBRf0Lij5NcUwzYAf9q/m/lUsdzv2zVYc4WAJd8uX9ZxDAGa9D358Tvxh/lKzBKqNQpQdAjyby6IGGui+UK9Mq1RVxoUkFtIIJ97IzaBoR9ScnucMXpu5mp5OAjws+VrUhKk1XNFAui1QgW507I0Xk+2AaR/W0rwJCQRsHx3orDxCwJkDQDiQQAf/SrvSnuAe/8pSuCuvscqPjZeIF7LnJ6dAms0XXrhbxRQ8c4q/Ud6RL2sKjinlZPfqsbVFSpjbJ9m4jtXvuGE5llyJbS1FcU8DsFbkY6HH9JQru49iXcd5mKt7fyPg0ypp7Hl+2g07mEcYlEMBXxNZw+HqNW27xp0ZkRfWO+Zl2t0s6DjM0LHWqV0wZLYqqBTlQIkhf2irM6mr7s2bVAcvEsuZzG9d7uY8aC/CR5GwkgKW8s4oI7m56ccdRPHV0qQFXnBybBToUInmIK+1fxtaUXYbQbQ83wxNOvG7O55gDsws= root@localhost

-----END SSH HOST KEY KEYS-----

[  564.364630] cloud-init[12560]: Cloud-init v. 24.1.3-0ubuntu1~22.04.5 finished at Tue, 12 Aug 2025 09:58:29 +0000. Datasource DataSourceAtomix [sources=/var/lib/cloud/seed/atomix][dsmode=net].  Up 564.36 seconds

Please wait for system to boot : [########################################] 100%

System up, please wait for UI to be online.

System UI online, please login to https://x.x.x.x to continue. << Access the Nexus Dashboard GUI via this URL >>

Ubuntu 22.04.4 LTS localhost ttyS0

localhost login:

在KVM上：