Risolvere i problemi relativi a un BMM usando az networkcloud baremetalmachine run-read-command
Potrebbero verificarsi situazioni in cui un utente deve analizzare e risolvere i problemi relativi a un computer bare metal locale (BMM). Operatore Nexus fornisce az networkcloud baremetalmachine run-read-command
in modo che gli utenti possano eseguire un elenco curato di comandi di sola lettura per ottenere informazioni da un BMM.
Il comando genera un file di output contenente i risultati dell'esecuzione del comando run-read. Per impostazione predefinita, i dati vengono inviati all'account di archiviazione di Cluster Manager. È disponibile anche un metodo di anteprima in cui gli utenti possono configurare la risorsa cluster con un account di archiviazione e un'identità che ha accesso all'account di archiviazione per ricevere l'output.
Prerequisiti
- Installare la versione più recente delle estensioni dell'interfaccia della riga di comando appropriate
- Assicurarsi che il BMM di destinazione abbia
poweredState
impostato suOn
ereadyState
impostato suTrue
- Ottenere il nome del gruppo di risorse gestite (cluster_MRG) creato per la risorsa
Cluster
Verificare l'accesso all'account di archiviazione di Cluster Manager
Nota
Il metodo di output dell'account di archiviazione di Cluster Manager verrà deprecato in futuro dopo il completamento dell'onboarding del cluster in Servizi attendibili e l'opzione di archiviazione gestita dall'utente è completamente supportata.
Se si usa il metodo di archiviazione di Cluster Manager, verificare di avere accesso all'account di archiviazione di Cluster Manager:
- Dal portale di Azure passare all'account di archiviazione di Gestione cluster.
- Nei dettagli dell'account di archiviazione selezionare Browser archiviazione dal menu di spostamento a sinistra.
- Nei dettagli del browser archiviazione selezionare Contenitori BLOB.
- Se viene visualizzato l'errore
403 This request is not authorized to perform this operation.
durante l'accesso all'account di archiviazione, è necessario aggiornare le impostazioni del firewall dell'account di archiviazione in modo che includano l'IP pubblico. - Richiedere l'accesso creando un ticket di supporto tramite il portale nella risorsa Gestione cluster. Specificare l'IP pubblico che richiede l'accesso.
ANTEPRIMA: inviare l'output del comando a un account di archiviazione specificato dall'utente
Importante
Si noti che questo metodo di specificare un account di archiviazione utente per l'output dei comandi è in anteprima. Questo metodo deve essere usato solo con gli account di archiviazione utente in cui non è abilitato il firewall. Se l'ambiente richiede che il firewall dell'account di archiviazione sia abilitato, usare il metodo di output di Cluster Manager esistente.
Creare e configurare le risorse di archiviazione
- Creare un account di archiviazione o identificare un account di archiviazione esistente che si vuole usare. Vedere Creare un account di archiviazione di Azure.
- Creare un contenitore di archiviazione BLOB nell'account di archiviazione. Vedere Creare un contenitore.
- Assegnare il ruolo "Collaboratore ai dati dei BLOB di archiviazione" agli utenti e alle identità gestite che devono accedere all'output run-data-extract.
- Vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB. Il ruolo deve anche essere assegnato a un'identità gestita assegnata dall'utente o all'identità gestita assegnata dal sistema del cluster.
- Per altre informazioni sulle identità gestite, vedere Identità gestite per le risorse di Azure.
- Se si usa l'identità assegnata dal sistema del cluster, l'identità assegnata dal sistema deve essere aggiunta al cluster prima di poter concedere l'accesso.
- Quando si assegna un ruolo all'identità assegnata dal sistema del cluster, assicurarsi di selezionare la risorsa con il tipo "Cluster (Operator Nexus)."
Configurare il cluster per l'uso di un'identità gestita assegnata dall'utente per l'accesso all'archiviazione
Usare questo comando per creare un cluster con un account di archiviazione gestito dall'utente e un'identità assegnata dall'utente. Si noti che questo esempio è un comando abbreviato che evidenzia solo i campi pertinenti per l'aggiunta dell'archiviazione gestita dall'utente. Non è il comando di creazione del cluster completo.
az networkcloud cluster create --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
...
--mi-user-assigned "<user-assigned-identity-resource-id>" \
--command-output-settings identity-type="UserAssignedIdentity" \
identity-resource-id="<user-assigned-identity-resource-id>" \
container-url="<container-url>" \
...
--subscription "<subscription>"
Usare questo comando per configurare un cluster esistente per un account di archiviazione fornito dall'utente e un'identità assegnata dall'utente. Il comando update può essere usato anche per modificare la posizione e l'identità dell'account di archiviazione, se necessario.
az networkcloud cluster update --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
--mi-user-assigned "<user-assigned-identity-resource-id>" \
--command-output-settings identity-type="UserAssignedIdentity" \
identity-resource-id="<user-assigned-identity-resource-id>" \
container-url="<container-url>" \
--subscription "<subscription>"
Configurare il cluster per l'uso di un'identità gestita assegnata dal sistema per l'accesso all'archiviazione
Usare questo comando per creare un cluster con un account di archiviazione gestito dall'utente e un'identità assegnata dal sistema. Si noti che questo esempio è un comando abbreviato che evidenzia solo i campi pertinenti per l'aggiunta dell'archiviazione gestita dall'utente. Non è il comando di creazione del cluster completo.
az networkcloud cluster create --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
...
--mi-system-assigned true \
--command-output-settings identity-type="SystemAssignedIdentity" \
container-url="<container-url>" \
...
--subscription "<subscription>"
Usare questo comando per configurare un cluster esistente per un account di archiviazione fornito dall'utente e per usare la propria identità assegnata dal sistema. Il comando update può essere usato anche per modificare il percorso dell'account di archiviazione.
az networkcloud cluster update --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
--mi-system-assigned true \
--command-output-settings identity-type="SystemAssignedIdentity" \
container-url="<container-url>" \
--subscription "<subscription>"
Per modificare il cluster da un'identità assegnata dall'utente a un'identità assegnata dal sistema, commandOutputSettings deve prima essere cancellato usando il comando nella sezione successiva, quindi impostare usando questo comando.
Cancellare commandOutputSettings del cluster
CommandOutputSettings può essere cancellato, indirizzando l'output di run-data-extract all'archiviazione di Gestione cluster. Tuttavia, non è consigliabile perché è meno sicuro e l'opzione verrà rimossa in una versione futura.
Tuttavia, commandOutputSettings deve essere cancellato se si passa da un'identità assegnata dall'utente a un'identità assegnata dal sistema.
Usare questo comando per cancellare CommandOutputSettings:
az rest --method patch \
--url "https://management.azure.com/subscriptions/<subscription>/resourceGroups/<cluster-resource-group>/providers/Microsoft.NetworkCloud/clusters/<cluster-name>?api-version=2024-08-01-preview" \
--body '{"properties": {"commandOutputSettings":null}}'
Visualizzare l'ID entità per l'identità gestita
L'ID risorsa di identità è reperibile selezionando "Visualizzazione JSON" nella risorsa di identità; l'ID si trova nella parte superiore del pannello visualizzato. L'URL del contenitore è disponibile nella scheda Impostazioni -> Proprietà della risorsa contenitore.
L'interfaccia della riga di comando può essere usata anche per visualizzare l'identità e i dati dell'ID entità associati all'interno del cluster.
Esempio:
az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>
Esempio di identità assegnata dal sistema:
"identity": {
"principalId": "2cb564c1-b4e5-4c71-bbc1-6ae259aa5f87",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"type": "SystemAssigned"
},
Esempio di identità assegnata dall'utente:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
"clientId": "e67dd610-99cf-4853-9fa0-d236b214e984",
"principalId": "8e6d23d6-bb6b-4cf3-a00f-4cd640ab1a24"
}
}
},
Eseguire un comando run-read
Il comando run-read consente di eseguire un comando sul BMM senza che nulla venga modificato. Alcuni comandi contengono più di una parola o richiedono un argomento per funzionare. Questi comandi sono così per distinguerli da quelli che possono apportare modifiche. Ad esempio, il comando run-read può usare kubectl get
, ma non kubectl apply
. Quando si usano questi comandi, è necessario inserire tutte le parole nel campo "comando". Ad esempio, {"command":"kubectl get","arguments":["nodes"]}
è corretto, mentre {"command":"kubectl","arguments":["get","nodes"]}
è errato.
Si noti anche che alcuni comandi iniziano con nc-toolbox nc-toolbox-runread
e devono essere immessi come mostrato.
nc-toolbox-runread
è un'immagine contenitore speciale che include più strumenti che non sono installati nell'host bare metal, ad esempio ipmitool
e racadm
.
Alcuni dei comandi run-read richiedono argomenti specifici per applicare le funzionalità di sola lettura dei comandi.
Un esempio di comando run-read che richiede argomenti specifici è il comando Mellanox consentito mstconfig
, che richiede l'argomento query
per applicare la sola lettura.
Avviso
Microsoft non fornisce né supporta alcuna chiamata API di Operatore Nexus, che preveda l'invio di nome utente e/o password in testo non crittografato. Si noti che tutti i valori inviati verranno registrati e considerati segreti esposti, che devono essere ruotati e revocati. Il metodo documentato da Microsoft per l'uso sicuro dei segreti consiste nell'archiviarli in un'istanza di Azure Key Vault. In caso di domande o dubbi specifici, inviare una richiesta tramite il portale di Azure.
Questo elenco mostra i comandi che è possibile usare. I comandi in *italics*
non possono avere arguments
; il resto può.
arp
brctl show
dmidecode
fdisk -l
host
hostname
ifconfig -a
ifconfig -s
ip address show
ip link show
ip maddress show
ip route show
journalctl
kubectl api-resources
kubectl api-versions
kubectl describe
kubectl get
kubectl logs
mount
ping
ss
tcpdump
traceroute
uname
ulimit -a
uptime
nc-toolbox nc-toolbox-runread ipmitool channel authcap
nc-toolbox nc-toolbox-runread ipmitool channel info
nc-toolbox nc-toolbox-runread ipmitool chassis status
nc-toolbox nc-toolbox-runread ipmitool chassis power status
nc-toolbox nc-toolbox-runread ipmitool chassis restart cause
nc-toolbox nc-toolbox-runread ipmitool chassis poh
nc-toolbox nc-toolbox-runread ipmitool dcmi power get_limit
nc-toolbox nc-toolbox-runread ipmitool dcmi sensors
nc-toolbox nc-toolbox-runread ipmitool dcmi asset_tag
nc-toolbox nc-toolbox-runread ipmitool dcmi get_mc_id_string
nc-toolbox nc-toolbox-runread ipmitool dcmi thermalpolicy get
nc-toolbox nc-toolbox-runread ipmitool dcmi get_temp_reading
nc-toolbox nc-toolbox-runread ipmitool dcmi get_conf_param
nc-toolbox nc-toolbox-runread ipmitool delloem lcd info
nc-toolbox nc-toolbox-runread ipmitool delloem lcd status
nc-toolbox nc-toolbox-runread ipmitool delloem mac list
nc-toolbox nc-toolbox-runread ipmitool delloem mac get
nc-toolbox nc-toolbox-runread ipmitool delloem lan get
nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor powerconsumption
nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor powerconsumptionhistory
nc-toolbox nc-toolbox-runread ipmitool delloem powermonitor getpowerbudget
nc-toolbox nc-toolbox-runread ipmitool delloem vflash info card
nc-toolbox nc-toolbox-runread ipmitool echo
nc-toolbox nc-toolbox-runread ipmitool ekanalyzer print
nc-toolbox nc-toolbox-runread ipmitool ekanalyzer summary
nc-toolbox nc-toolbox-runread ipmitool fru print
nc-toolbox nc-toolbox-runread ipmitool fwum info
nc-toolbox nc-toolbox-runread ipmitool fwum status
nc-toolbox nc-toolbox-runread ipmitool fwum tracelog
nc-toolbox nc-toolbox-runread ipmitool gendev list
nc-toolbox nc-toolbox-runread ipmitool hpm rollbackstatus
nc-toolbox nc-toolbox-runread ipmitool hpm selftestresult
nc-toolbox nc-toolbox-runread ipmitool ime help
nc-toolbox nc-toolbox-runread ipmitool ime info
nc-toolbox nc-toolbox-runread ipmitool isol info
nc-toolbox nc-toolbox-runread ipmitool lan print
nc-toolbox nc-toolbox-runread ipmitool lan alert print
nc-toolbox nc-toolbox-runread ipmitool lan stats get
nc-toolbox nc-toolbox-runread ipmitool mc bootparam get
nc-toolbox nc-toolbox-runread ipmitool mc chassis poh
nc-toolbox nc-toolbox-runread ipmitool mc chassis policy list
nc-toolbox nc-toolbox-runread ipmitool mc chassis power status
nc-toolbox nc-toolbox-runread ipmitool mc chassis status
nc-toolbox nc-toolbox-runread ipmitool mc getenables
nc-toolbox nc-toolbox-runread ipmitool mc getsysinfo
nc-toolbox nc-toolbox-runread ipmitool mc guid
nc-toolbox nc-toolbox-runread ipmitool mc info
nc-toolbox nc-toolbox-runread ipmitool mc restart cause
nc-toolbox nc-toolbox-runread ipmitool mc watchdog get
nc-toolbox nc-toolbox-runread ipmitool bmc bootparam get
nc-toolbox nc-toolbox-runread ipmitool bmc chassis poh
nc-toolbox nc-toolbox-runread ipmitool bmc chassis policy list
nc-toolbox nc-toolbox-runread ipmitool bmc chassis power status
nc-toolbox nc-toolbox-runread ipmitool bmc chassis status
nc-toolbox nc-toolbox-runread ipmitool bmc getenables
nc-toolbox nc-toolbox-runread ipmitool bmc getsysinfo
nc-toolbox nc-toolbox-runread ipmitool bmc guid
nc-toolbox nc-toolbox-runread ipmitool bmc info
nc-toolbox nc-toolbox-runread ipmitool bmc restart cause
nc-toolbox nc-toolbox-runread ipmitool bmc watchdog get
nc-toolbox nc-toolbox-runread ipmitool nm alert get
nc-toolbox nc-toolbox-runread ipmitool nm capability
nc-toolbox nc-toolbox-runread ipmitool nm discover
nc-toolbox nc-toolbox-runread ipmitool nm policy get policy_id
nc-toolbox nc-toolbox-runread ipmitool nm policy limiting
nc-toolbox nc-toolbox-runread ipmitool nm statistics
nc-toolbox nc-toolbox-runread ipmitool nm suspend get
nc-toolbox nc-toolbox-runread ipmitool nm threshold get
nc-toolbox nc-toolbox-runread ipmitool pef
nc-toolbox nc-toolbox-runread ipmitool picmg addrinfo
nc-toolbox nc-toolbox-runread ipmitool picmg policy get
nc-toolbox nc-toolbox-runread ipmitool power status
nc-toolbox nc-toolbox-runread ipmitool sdr elist
nc-toolbox nc-toolbox-runread ipmitool sdr get
nc-toolbox nc-toolbox-runread ipmitool sdr info
nc-toolbox nc-toolbox-runread ipmitool sdr list
nc-toolbox nc-toolbox-runread ipmitool sdr type
nc-toolbox nc-toolbox-runread ipmitool sel elist
nc-toolbox nc-toolbox-runread ipmitool sel get
nc-toolbox nc-toolbox-runread ipmitool sel info
nc-toolbox nc-toolbox-runread ipmitool sel list
nc-toolbox nc-toolbox-runread ipmitool sel time get
nc-toolbox nc-toolbox-runread ipmitool sensor get
nc-toolbox nc-toolbox-runread ipmitool sensor list
nc-toolbox nc-toolbox-runread ipmitool session info
nc-toolbox nc-toolbox-runread ipmitool sol info
nc-toolbox nc-toolbox-runread ipmitool sol payload status
nc-toolbox nc-toolbox-runread ipmitool user list
nc-toolbox nc-toolbox-runread ipmitool user summary
nc-toolbox nc-toolbox-runread racadm arp
nc-toolbox nc-toolbox-runread racadm coredump
nc-toolbox nc-toolbox-runread racadm diagnostics
nc-toolbox nc-toolbox-runread racadm eventfilters get
nc-toolbox nc-toolbox-runread racadm fcstatistics
nc-toolbox nc-toolbox-runread racadm get
nc-toolbox nc-toolbox-runread racadm getconfig
nc-toolbox nc-toolbox-runread racadm gethostnetworkinterfaces
nc-toolbox nc-toolbox-runread racadm getled
nc-toolbox nc-toolbox-runread racadm getniccfg
nc-toolbox nc-toolbox-runread racadm getraclog
nc-toolbox nc-toolbox-runread racadm getractime
nc-toolbox nc-toolbox-runread racadm getsel
nc-toolbox nc-toolbox-runread racadm getsensorinfo
nc-toolbox nc-toolbox-runread racadm getssninfo
nc-toolbox nc-toolbox-runread racadm getsvctag
nc-toolbox nc-toolbox-runread racadm getsysinfo
nc-toolbox nc-toolbox-runread racadm gettracelog
nc-toolbox nc-toolbox-runread racadm getversion
nc-toolbox nc-toolbox-runread racadm hwinventory
nc-toolbox nc-toolbox-runread racadm ifconfig
nc-toolbox nc-toolbox-runread racadm inlettemphistory get
nc-toolbox nc-toolbox-runread racadm jobqueue view
nc-toolbox nc-toolbox-runread racadm lclog view
nc-toolbox nc-toolbox-runread racadm lclog viewconfigresult
nc-toolbox nc-toolbox-runread racadm license view
nc-toolbox nc-toolbox-runread racadm netstat
nc-toolbox nc-toolbox-runread racadm nicstatistics
nc-toolbox nc-toolbox-runread racadm ping
nc-toolbox nc-toolbox-runread racadm ping6
nc-toolbox nc-toolbox-runread racadm racdump
nc-toolbox nc-toolbox-runread racadm sslcertview
nc-toolbox nc-toolbox-runread racadm swinventory
nc-toolbox nc-toolbox-runread racadm systemconfig getbackupscheduler
nc-toolbox nc-toolbox-runread racadm systemperfstatistics
(argomento PeakReset NON consentito)nc-toolbox nc-toolbox-runread racadm techsupreport getupdatetime
nc-toolbox nc-toolbox-runread racadm traceroute
nc-toolbox nc-toolbox-runread racadm traceroute6
nc-toolbox nc-toolbox-runread racadm usercertview
nc-toolbox nc-toolbox-runread racadm vflashsd status
nc-toolbox nc-toolbox-runread racadm vflashpartition list
nc-toolbox nc-toolbox-runread racadm vflashpartition status -a
nc-toolbox nc-toolbox-runread mstregdump
nc-toolbox nc-toolbox-runread mstconfig
(richiedequery
arg)nc-toolbox nc-toolbox-runread mstflint
(richiedequery
arg)nc-toolbox nc-toolbox-runread mstlink
(richiedequery
arg)nc-toolbox nc-toolbox-runread mstfwmanager
(richiedequery
arg)nc-toolbox nc-toolbox-runread mlx_temp
La sintassi del comando è:
az networkcloud baremetalmachine run-read-command --name "<machine-name>"
--limit-time-seconds "<timeout>" \
--commands '[{"command":"<command1>"},{"command":"<command2>","arguments":["<arg1>","<arg2>"]}]' \
--resource-group "<cluster_MRG>" \
--subscription "<subscription>"
È possibile specificare più comandi in formato JSON per l'opzione --commands
.
Per un comando con più argomenti, specificarli come elenco per il parametro arguments
. Vedere Azure CLI Shorthand (Sintassi abbreviata dell'interfaccia della riga di comando di Azure) per istruzioni sulla costruzione della struttura --commands
.
Questi comandi possono essere a esecuzione prolungata, quindi è consigliabile impostare --limit-time-seconds
almeno su 600 secondi (10 minuti). L'esecuzione di più comandi potrebbe richiedere più di 10 minuti.
Questo comando viene eseguito in modo sincrono. Per non dover attendere il completamento del comando, specificare le opzioni --no-wait --debug
. Per altre informazioni, vedere come tenere traccia delle operazioni asincrone.
Quando viene fornito un argomento facoltativo --output-directory
, il risultato dell'output viene scaricato ed estratto nella directory locale.
Avviso
L'utilizzo dell'argomento --output-directory
sovrascriverà tutti i file nella directory locale con lo stesso nome dei nuovi file creati.
Questo esempio esegue un 'kubectl get pods'
az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
--limit-time-seconds 60 \
--commands "[{command:'kubectl get',arguments:[pods,-n,nc-system]}]" \
--resource-group "<cluster_MRG>" \
--subscription "<subscription>"
Questo esempio esegue il comando hostname
e un comando ping
az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
--limit-time-seconds 60 \
--commands '[{"command":"hostname"},{"command":"ping","arguments":["198.51.102.1","-c","3"]}]' \
--resource-group "<cluster_MRG>" \
--subscription "<subscription>"
Questo esempio esegue il comando racadm getsysinfo -c
az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>" \
--limit-time-seconds 60 \
--commands '[{"command":"nc-toolbox nc-toolbox-runread racadm getsysinfo","arguments":["-c"]}]' \
--resource-group "<cluster_MRG>" \
--subscription "<subscription>"
Come visualizzare l'output di az networkcloud baremetalmachine run-read-command
nell'account di archiviazione di Gestione cluster
Questa guida illustra come accedere al file di output creato nell'account di archiviazione di Gestione cluster quando viene eseguito az networkcloud baremetalmachine run-read-command
su un server. Il nome del file viene identificato nell'output dello stato az rest
.
Aprire il gruppo di risorse gestite Gestione cluster per il cluster in cui è ospitato il server e quindi selezionare l'account di archiviazione.
Nei dettagli dell'account di archiviazione selezionare Browser archiviazione dal menu di spostamento a sinistra.
Nei dettagli del browser archiviazione selezionare Contenitori BLOB.
Selezionare il contenitore BLOB baremetal-run-command-output.
Se l'account di archiviazione è bloccato, viene visualizzato l'errore
403 This request is not authorized to perform this operation.
a causa delle restrizioni di rete o del firewall. Per le procedure per verificare l'accesso, vedere le sezioni archiviazione di Gestione cluster o archiviazione gestita dal cliente.Selezionare il file di output dal comando run-read. Il nome file può essere identificato dal comando
az rest --method get
. Inoltre, il timestamp Ultima modifica corrisponde a quando il comando è stato eseguito.È possibile gestire e scaricare il file di output dalla finestra Panoramica.
ANTEPRIMA: controllare lo stato del comando e visualizzare l'output in un account di archiviazione specificato dall'utente
È riportato l'output di esempio. Stampa i primi 4.000 caratteri del risultato sullo schermo per praticità e fornisce un collegamento di breve durata al BLOB di archiviazione contenente il risultato dell'esecuzione del comando. È possibile usare il collegamento per scaricare il file di output compresso (tar.gz).
====Action Command Output====
+ hostname
rack1compute01
+ ping 198.51.102.1 -c 3
PING 198.51.102.1 (198.51.102.1) 56(84) bytes of data.
--- 198.51.102.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2049ms
================================
Script execution result can be found in storage account:
https://<storage_account_name>.blob.core.windows.net/bmm-run-command-output/a8e0a5fe-3279-46a8-b995-51f2f98a18dd-action-bmmrunreadcmd.tar.gz?se=2023-04-14T06%3A37%3A00Z&sig=XXX&sp=r&spr=https&sr=b&st=2023-04-14T02%3A37%3A00Z&sv=2019-12-12