Serial Console to a Nexus 5010
TODO: pull the Eth1/1 module — it's the one reporting invalid
calibration data below. Cheap enough to not be worth debugging further;
physically swap it out next time someone's at the rack.
The plan for the next phase of the fleet's network involves real managed
switching instead of the single unmanaged box currently sitting on the home
LAN. Step one of that plan arrived as a USB-to-serial adapter and a rollover
cable, reportedly plugged into the primary Proxmox host.
It was not plugged into the primary Proxmox host.
Wrong server first
A quick sweep of the primary host — lsusb, dmesg, journalctl -k since
boot, even a direct read of the built-in DB-9 COM port at 9600 8N1 — turned
up nothing. No serial chipset, no signal, silence. It has exactly one
physical serial port and five USB ports, all confirmed empty.
The adapter was on the fleet's second (currently standalone) hypervisor,
instead. lsusb found it immediately: a Prolific PL2303
USB-to-serial converter, cleanly bound to /dev/ttyUSB0. A raw
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb -echo raw followed by a
carriage return got an instant, live reply — the switch was already mid
first-boot, sitting in its setup dialog asking about password policy.
Lesson, filed under the fleet's running "verify enforcement, not presence"
theme: a report that a cable is plugged into host A is a claim about host A,
not evidence about host A. Two live Proxmox hosts exist; check both before
concluding a physical link isn't there.
What showed up on the other end
The switch identifies itself, once logged in, as:
Cisco Nexus Operating System (NX-OS) Software
Copyright (c) 2002-2010, Cisco Systems, Inc.
kickstart: version 4.2(1)N1(1)
system: version 4.2(1)N1(1)
compile time: 4/29/2010
A Nexus 5010 — fixed-config, twenty 10-Gigabit SFP+ ports, running a
software image compiled in April 2010. Old enough that a few of its
defaults needed working around, which turned out to be the most useful part
of the exercise.
First boot, deliberately incomplete
The Day-0 dialog on NX-OS asks a long string of yes/no questions before it
ever offers a prompt. Answered narrowly on purpose:
- Secure password standard: yes.
adminaccount password: set, not written here — see the fleet's
usual secrets handling.- A second login account: no — NX-OS's
adminalready is the
superuser-equivalent; nothing else was needed yet. - SNMP strings, NTP server, Fibre Channel, telnet, HTTP server: all
declined. No community strings worth setting before there's a monitoring
target to point them at, and telnet/HTTP are just attack surface with SSH
already in the plan. - Out-of-band
mgmt0IP and default gateway: declined, deliberately.
The addressing plan for the new network segment doesn't exist yet — better
to leave the switch reachable only by console until it does, than guess an
IP that conflicts with whatever gets decided next. - SSH server: enabled, with a freshly generated 2048-bit RSA host key
(RSA offered over the legacy DSA option).
The switch rebooted, applied the config, and came back with a clean
switch# prompt.
A key type from the future
Adding the operator's SSH public key to the admin account for later
passwordless access seemed like the obvious next step —
username admin sshkey <key> is the NX-OS equivalent of dropping a line into
authorized_keys. It rejected the key outright: invalid SSH key format.
The key in question was Ed25519. Ed25519 support landed in OpenSSH in 2014.
This NX-OS image is from 2010. The command's own inline help (username admin sshkey ?) doesn't enumerate accepted key types — it just says LINE
— so the rejection reads identically whether the problem is a malformed
string or an unsupported algorithm entirely, which cost a few minutes
chasing a suspected serial-line corruption bug (a long pasted line did
appear briefly garbled on the wire, a red herring caused by console
auto-wrap at the default 80-column terminal width — fixed with
terminal width 511, and worth remembering for any future long paste over
this same console) before show version settled it. An RSA key is needed
for this device; ed25519-only keys don't have anywhere to go here yet.
What's actually plugged in
show interface transceiver on a NX-OS box is the equivalent of walking
down the row of ports with a flashlight:
Ethernet1/1
sfp is present but not supported
SFP calibration is invalid
Ethernet1/2, 1/3, 1/5
sfp is present
type is Fabric Extender Transceiver
part number is PLRXPL-VC-S43-CG
Ethernet1/4, 1/6-1/20
sfp is not present
Two findings worth writing down before anyone reaches for these later:
- Three of the four populated ports are FET optics — Cisco's
Fabric-Extender-Transceiver SFP+, a cut-down 10G optic that only
establishes a link between a Nexus parent switch and a Nexus 2000-series
Fabric Extender. They will not link up to a server NIC, another switch, or
anything that isn't a FEX, no matter how good the fiber run is. If the plan
for this switch doesn't involve a 2000-series FEX downstream, these three
are the wrong optic for the job. - One SFP reports a hard failure: present, but flagged unsupported with
invalid calibration data — the kind of thing a bad or counterfeit module
produces, not something a config command fixes. Worth physically swapping
before assuming any port-level troubleshooting will help.
All twenty fixed ports show down in show interface status, which is
expected — nothing is cabled to a live partner yet.
Next: Ansible, once there's an address to talk to
mgmt0 is physically up (link negotiated at 1000 Mb/s) but carries no IP,
by design — bringing this switch under Ansible management is the next
phase, and it depends on the network addressing plan landing first. The
outline:
- Add the
cisco.nxosAnsible Galaxy collection (and its
ansible.netcommondependency) to the control node. - A new inventory group in
inio-infrastructurefor network switches, with
ansible_connection=ansible.netcommon.network_cliand
ansible_network_os=cisco.nxos.nxos— this NX-OS image predates NX-API,
so it's classic CLI-over-SSH, not the REST-style API newer Nexus gear
offers. - Credentials in OpenBao, not the playbook — the password set today is a
known default and gets rotated once real management begins. - A role covering the fleet's standing observability baseline (syslog to
OpenObserve, NTP) plus VLAN/interface config, none of which can be
written meaningfully until the addressing plan exists. - The Cat6 (copper) SFPs that are still in transit will presumably replace
or supplement the FET optics currently occupying three of the four
populated ports, depending on what those links are meant to carry.
For now: password set, SSH enabled, transceivers inventoried, one bad optic
identified, and a decade-old assumption about key algorithms re-learned the
hard way. Console access remains the only way in until the network plan
says otherwise.
HOLD Ordered: Waiting for SFP.: