Felsöka BMM-problem med hjälp av az networkcloud baremetalmachine run-read-command
Det kan finnas situationer där en användare behöver undersöka och lösa problem med en lokal dator utan operativsystem (BMM). Operatorn az networkcloud baremetalmachine run-read-command
Nexus tillhandahåller så att användare kan köra en kurerad lista med skrivskyddade kommandon för att hämta information från en BMM.
Kommandot skapar en utdatafil som innehåller resultatet av körningen av körningsläsningskommandot. Som standard skickas data till Klusterhanterarens lagringskonto. Det finns också en förhandsgranskningsmetod där användarna kan konfigurera klusterresursen med ett lagringskonto och en identitet som har åtkomst till lagringskontot för att ta emot utdata.
Förutsättningar
- Installera den senaste versionen av lämpliga CLI-tillägg
- Se till att BMM-målet måste ha sin
poweredState
uppsättning tillOn
och ha sinreadyState
True
- Hämta namnet på den hanterade resursgruppen (cluster_MRG) som du skapade för
Cluster
resursen
Kontrollera åtkomsten till Klusterhanterarens lagringskonto
Kommentar
Utdatametoden för Cluster Manager-lagringskontot kommer att bli inaktuell i framtiden när klusterinmatningen till betrodda tjänster har slutförts och det användarhanterade lagringsalternativet stöds fullt ut.
Om du använder Cluster Manager-lagringsmetoden kontrollerar du att du har åtkomst till Klusterhanterarens lagringskonto:
- Från Azure Portal går du till Klusterhanterarens lagringskonto.
- I information om lagringskontot väljer du Lagringswebbläsare på navigeringsmenyn till vänster.
- I information om Storage-webbläsaren väljer du blobcontainrar.
- Om du får ett
403 This request is not authorized to perform this operation.
tag åtkomst till lagringskontot måste lagringskontots brandväggsinställningar uppdateras för att inkludera den offentliga IP-adressen. - Begär åtkomst genom att skapa ett supportärende via portalen på Cluster Manager-resursen. Ange den offentliga IP-adress som kräver åtkomst.
FÖRHANDSVERSION: Skicka kommandoutdata till ett användarangivet lagringskonto
Viktigt!
Observera att den här metoden för att ange ett användarkonto för kommandoutdata finns i förhandsversionen. Den här metoden bör endast användas med användarkonton som inte har brandvägg aktiverat. Om din miljö kräver att brandväggen för lagringskontot är aktiverad använder du den befintliga cluster manager-utdatametoden.
Skapa och konfigurera lagringsresurser
- Skapa ett lagringskonto eller identifiera ett befintligt lagringskonto som du vill använda. Se Skapa ett Azure Storage-konto.
- Skapa en bloblagringscontainer i lagringskontot. Se Skapa en container.
- Tilldela rollen "Storage Blob Data Contributor" till användare och hanterade identiteter som behöver åtkomst till run-data-extract-utdata.
- Se Tilldela en Azure-roll för åtkomst till blobbdata. Rollen måste också tilldelas till antingen en användartilldelad hanterad identitet eller klustrets egen systemtilldelade hanterade identitet.
- Mer information om hanterade identiteter finns i Hanterade identiteter för Azure-resurser.
- Om du använder klustrets systemtilldelade identitet måste den systemtilldelade identiteten läggas till i klustret innan den kan beviljas åtkomst.
- När du tilldelar en roll till klustrets systemtilldelade identitet kontrollerar du att du väljer resursen med typen "Kluster (Operator Nexus)."
Konfigurera klustret att använda en användartilldelad hanterad identitet för lagringsåtkomst
Använd det här kommandot för att skapa ett kluster med ett användarhanterat lagringskonto och användartilldelad identitet. Observera att det här exemplet är ett förkortat kommando som bara markerar fälten som är relevanta för att lägga till användarhanterad lagring. Det är inte det fullständiga kommandot för att skapa kluster.
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>"
Använd det här kommandot för att konfigurera ett befintligt kluster för ett användarangivet lagringskonto och användartilldelad identitet. Uppdateringskommandot kan också användas för att ändra lagringskontots plats och identitet om det behövs.
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>"
Konfigurera klustret att använda en systemtilldelad hanterad identitet för lagringsåtkomst
Använd det här kommandot för att skapa ett kluster med ett användarhanterat lagringskonto och en systemtilldelad identitet. Observera att det här exemplet är ett förkortat kommando som bara markerar fälten som är relevanta för att lägga till användarhanterad lagring. Det är inte det fullständiga kommandot för att skapa kluster.
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>"
Använd det här kommandot för att konfigurera ett befintligt kluster för ett lagringskonto som tillhandahålls av användaren och för att använda en egen systemtilldelad identitet. Uppdateringskommandot kan också användas för att ändra lagringskontots plats.
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>"
Om du vill ändra klustret från en användartilldelad identitet till en systemtilldelad identitet måste CommandOutputSettings först rensas med kommandot i nästa avsnitt och sedan ställas in med det här kommandot.
Rensa klustrets CommandOutputSettings
CommandOutputSettings kan rensas och dirigera run-data-extract-utdata tillbaka till klusterhanterarens lagring. Det rekommenderas dock inte eftersom det är mindre säkert och alternativet tas bort i en framtida version.
CommandOutputSettings måste dock rensas om du byter från en användartilldelad identitet till en systemtilldelad identitet.
Använd det här kommandot för att rensa 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}}'
Visa huvud-ID:t för den hanterade identiteten
Du hittar identitetsresurs-ID:t genom att välja "JSON-vy" på identitetsresursen. ID:t finns överst i panelen som visas. Container-URL:en finns på fliken Inställningar –> egenskaper för containerresursen.
CLI kan också användas för att visa identiteten och de associerade huvudnamns-ID:t i klustret.
Exempel:
az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>
Exempel på systemtilldelad identitet:
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
},
Exempel på användartilldelad identitet:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "bbbbbbbb-cccc-dddd-2222-333333333333"
}
}
},
Köra ett körningsläsningskommando
Med körningsläsningskommandot kan du köra ett kommando på BMM som inte ändrar något. Vissa kommandon har mer än ett ord eller behöver ett argument för att fungera. Dessa kommandon görs så här för att skilja dem från dem som kan ändra saker. Run-read-command kan till exempel använda kubectl get
men inte kubectl apply
. När du använder dessa kommandon måste du placera alla ord i fältet "kommando". Till exempel är {"command":"kubectl get","arguments":["nodes"]}
rätt, {"command":"kubectl","arguments":["get","nodes"]}
är fel.
Observera också att vissa kommandon börjar med nc-toolbox nc-toolbox-runread
och måste anges som visas.
nc-toolbox-runread
är en särskild containeravbildning som innehåller fler verktyg som inte är installerade på bare metal-värden, till exempel ipmitool
och racadm
.
Vissa av run-read-kommandona kräver att specifika argument anges för att framtvinga skrivskyddade funktioner i kommandona.
Ett exempel på körningsläsningskommandon som kräver specifika argument är det tillåtna Mellanox-kommandot mstconfig
, som kräver query
att argumentet anges för att framtvinga skrivskyddad användning.
Varning
Microsoft tillhandahåller eller stöder inga operatörs-Nexus API-anrop som förväntar sig att användarnamn och/eller lösenord i klartext ska anges. Observera att alla värden som skickas loggas och anses vara exponerade hemligheter, som ska roteras och återkallas. Den Microsoft-dokumenterade metoden för säker användning av hemligheter är att lagra dem i ett Azure Key Vault, om du har specifika frågor eller problem skickar du en begäran via Azure-portalen.
I den här listan visas de kommandon som du kan använda. Kommandon i *italics*
kan inte ha arguments
, resten kan.
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
(PeakReset-argumentet tillåts INTE)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
(kräverquery
arg)nc-toolbox nc-toolbox-runread mstflint
(kräverquery
arg)nc-toolbox nc-toolbox-runread mstlink
(kräverquery
arg)nc-toolbox nc-toolbox-runread mstfwmanager
(kräverquery
arg)nc-toolbox nc-toolbox-runread mlx_temp
Kommandosyntaxen är:
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>"
Flera kommandon kan anges i json-format till --commands
alternativet.
För ett kommando med flera argument anger du som en lista till arguments
parameter. Mer information om hur du skapar strukturen finns i --commands
Azure CLI Shorthand.
Dessa kommandon kan vara tidskrävande så rekommendationen är att ange --limit-time-seconds
till minst 600 sekunder (10 minuter). Det kan ta längre tid än 10 minuter att köra flera kommandon.
Det här kommandot körs synkront. Om du vill hoppa över att vänta på att kommandot ska slutföras anger du alternativen --no-wait --debug
. Mer information finns i spåra asynkrona åtgärder.
När ett valfritt argument --output-directory
anges laddas utdataresultatet ned och extraheras till den lokala katalogen.
Varning
--output-directory
Om du använder argumentet skrivs alla filer i den lokala katalogen över som har samma namn som de nya filer som skapas.
Det här exemplet kör "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>"
Det här exemplet kör hostname
kommandot och ett ping
kommando
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>"
Det här exemplet kör racadm getsysinfo -c
kommandot
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>"
Så här visar du utdata för en az networkcloud baremetalmachine run-read-command
i Klusterhanterarens lagringskonto
Den här guiden vägleder dig genom att komma åt utdatafilen som skapas i Klusterhanterarens lagringskonto när en az networkcloud baremetalmachine run-read-command
körs på en server. Namnet på filen identifieras i az rest
statusutdata.
Öppna klusterhanterarens hanterade resursgrupp för klustret där servern finns och välj sedan lagringskontot.
I information om lagringskontot väljer du Lagringswebbläsare på navigeringsmenyn till vänster.
I information om Storage-webbläsaren väljer du blobcontainrar.
Välj blobcontainern baremetal-run-command-output.
Lagringskontot kan vara låst på grund
403 This request is not authorized to perform this operation.
av nätverks- eller brandväggsbegränsningar. Se klusterhanterarens lagring eller de kundhanterade lagringsavsnitten för procedurer för att verifiera åtkomsten.Välj utdatafilen från körningsläsningskommandot. Filnamnet kan identifieras från
az rest --method get
kommandot . Dessutom justeras tidsstämpeln Senast ändrad med när kommandot kördes.Du kan hantera och ladda ned utdatafilen från popup-fönstret Översikt .
FÖRHANDSVERSION: Kontrollera kommandostatusen och visa utdata i ett angivet lagringskonto
Exempelutdata visas. Det skriver ut de översta 4 000 tecknen i resultatet till skärmen för enkelhetens skull och ger en kortlivad länk till lagringsbloben som innehåller kommandokörningsresultatet. Du kan använda länken för att ladda ned den zippade utdatafilen (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