Partilhar via


Solucionar problemas de BMM usando o az networkcloud baremetalmachine run-read-command

Pode haver situações em que um usuário precise investigar e resolver problemas com uma máquina bare metal (BMM) local. O Operator Nexus fornece o az networkcloud baremetalmachine run-read-command para que os utilizadores possam executar uma lista curada de comandos apenas de leitura para obter informações de um BMM.

O comando produz um arquivo de saída contendo os resultados da execução do comando run-read. Por padrão, os dados são enviados para a conta de armazenamento do Gerenciador de Clusters. Há também um método de pré-visualização em que os utilizadores podem configurar o cluster com uma conta de armazenamento e uma identidade que tenham acesso a essa conta de armazenamento para receberem o resultado.

Pré-requisitos

  1. Instale a versão mais recente das extensões apropriadas da CLI
  2. Certifique-se de que o BMM alvo deve ter seu poweredState definido para On e ter seu readyState definido para True
  3. Obter o nome do grupo de Recursos Gerenciados (cluster_MRG) que você criou para Cluster o recurso

Enviar saída de comando para uma conta de armazenamento especificada pelo usuário

Para configurar a Conta de Armazenamento e o contêiner para o qual a saída do comando é enviada, consulte Suporte do Cluster Nexus do Operador do Azure para identidades gerenciadas e recursos fornecidos pelo usuário.

Para acessar a saída de um comando, os usuários precisam do acesso apropriado ao blob de armazenamento, incluindo ter as atribuições de função do Azure necessárias e garantir que quaisquer restrições de rede sejam configuradas corretamente.

Para atribuições de função, um usuário deve ter as seguintes atribuições de função no contêiner de blob ou em sua Conta de Armazenamento:

  • Uma função de acesso a dados, como Storage Blob Data Reader ou Storage Blob Data Contributor
  • A função Leitor do Azure Resource Manager, no mínimo

Para obter informações sobre como atribuir funções a contas de armazenamento, consulte Atribuir uma função do Azure para acesso a dados de blob.

Para restrições de rede, se a Conta de Armazenamento permitir o acesso de ponto de extremidade público por meio de um firewall, o firewall deverá ser configurado com uma regra de rede para permitir a passagem do endereço IP desse usuário. Se ele permitir apenas acesso privado ao ponto de extremidade, um usuário deverá fazer parte de uma rede que tenha acesso ao ponto de extremidade privado.

Para obter informações sobre como permitir o acesso através do firewall da conta de armazenamento usando regras de rede ou pontos de extremidade privados, consulte a respetiva documentação.

Verificar o acesso à conta de armazenamento especificada

Antes de executar comandos, convém verificar se você tem acesso à Conta de Armazenamento especificada:

  1. No portal do Azure, navegue até a Conta de Armazenamento.
  2. Nos detalhes da Conta de Armazenamento, selecione Navegador de armazenamento no menu de navegação do lado esquerdo.
  3. Nos detalhes do navegador de armazenamento, selecione Contêineres de Blob.
  4. Encontre o contêiner para o qual a saída do comando deve ser enviada e selecione-o.
  5. Se você encontrar erros ao acessar a Conta de Armazenamento ou o contêiner, o usuário que estiver usando poderá precisar de uma atribuição de função para a Conta de Armazenamento ou contêiner. Como alternativa, as configurações de firewall da Conta de Armazenamento podem precisar ser atualizadas para incluir seu endereço IP.

Executar um comando run-read

O comando run-read permite executar um comando no BMM que não altera nada. Alguns comandos têm mais de uma palavra ou precisam de um argumento para funcionar. Esses comandos são feitos assim para separá-los daqueles que podem mudar as coisas. Por exemplo, run-read-command pode usar kubectl get , mas não kubectl apply. Quando você usa esses comandos, você tem que colocar todas as palavras no campo "comando". Por exemplo, {command:'kubectl get',arguments:[nodes]} está certo; {command:kubectl,arguments:[get,nodes]} está errado.

Observe também que alguns comandos começam com nc-toolbox nc-toolbox-runread e devem ser inseridos conforme mostrado. nc-toolbox-runread é uma imagem de contêiner especial que inclui mais ferramentas que não estão instaladas no host bare metal, como ipmitool e racadm.

Alguns dos comandos run-read exigem que argumentos específicos sejam fornecidos para garantir funcionalidades de somente leitura dos comandos. Um exemplo de comandos de leitura de execução que exigem argumentos específicos é o comando mstconfigMellanox permitido, que requer que o query argumento seja fornecido para impor somente leitura.

Advertência

A Microsoft não fornece nem oferece suporte a chamadas de API do Operator Nexus que esperam que o nome de usuário e/ou senha de texto simples sejam fornecidos. Observe que todos os valores enviados são registados e são considerados segredos expostos, que devem ser substituídos e revogados. O método documentado da Microsoft para usar segredos com segurança é armazená-los em um Cofre de Chaves do Azure. Se você tiver dúvidas ou preocupações específicas, envie uma solicitação por meio do portal do Azure.

Esta lista mostra os comandos que você pode usar. Comandos em *italics* não podem ter arguments; o resto pode.

  • 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
  • timedatectl status
  • hostnamectl status
  • 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 (Argumento *PeakReset* NÃO permitido)
  • 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 (requer query argumento)
  • nc-toolbox nc-toolbox-runread mstflint (requer query argumento)
  • nc-toolbox nc-toolbox-runread mstlink (requer query argumento)
  • nc-toolbox nc-toolbox-runread mstfwmanager (requer query argumento)
  • nc-toolbox nc-toolbox-runread mlx_temp

A sintaxe de comando para um único comando sem argumentos é a seguinte, usando hostname como exemplo:

az networkcloud baremetalmachine run-read-command --name "<bareMetalMachineName>"
    --limit-time-seconds "<timeout>" \
    --commands "[{command:hostname}]" \
    --resource-group "<cluster_MRG>" \
    --subscription "<subscription>"
  • --name é o nome do recurso BMM no qual executar o comando.
  • O --commands parâmetro sempre usa uma lista de comandos, mesmo que haja apenas um comando.
  • Vários comandos podem ser fornecidos no formato json usando a notação abreviada 'Azure CLI Shorthand'.
  • Qualquer espaço em branco deve ser colocado entre aspas simples.
  • Quaisquer argumentos para cada comando também devem ser fornecidos como uma lista, conforme mostrado nos exemplos a seguir.
  • Nem todos os comandos podem ser executados em qualquer BMM. Por exemplo, só é possível executar kubectl comandos a partir de um BMM com a control-plane função.
--commands "[{command:hostname},{command:'nc-toolbox nc-toolbox-runread racadm ifconfig'}]"
--commands "[{command:hostname},{command:'nc-toolbox nc-toolbox-runread racadm getsysinfo',arguments:[-c]}]"
--commands "[{command:ping,arguments:[198.51.102.1,-c,3]}]"

Esses comandos podem ser de longa execução, então a recomendação é definir --limit-time-seconds para pelo menos 600 segundos (10 minutos). A execução de vários comandos pode levar mais de 10 minutos.

Este comando é executado de forma síncrona. Se desejar pular a espera pela conclusão do comando, especifique as opções --no-wait --debug. Para obter mais informações, consulte como controlar operações assíncronas.

Quando um argumento --output-directory opcional é fornecido, o resultado da saída é baixado e extraído para o diretório local, desde que o usuário que executa o comando tenha acesso apropriado à Conta de Armazenamento.

Advertência

O uso do --output-directory argumento substitui todos os arquivos no diretório local que têm o mesmo nome dos novos arquivos que estão sendo criados.

Este exemplo executa um '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>"

Este exemplo executa o hostname comando e um ping comando

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>"

Este exemplo executa o racadm getsysinfo -c comando

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>"

Verificar o estado do comando

A saída da amostra é mostrada. Ele imprime os 4.000 principais caracteres do resultado na tela para conveniência e fornece um link de curta duração para o blob de armazenamento que contém o resultado da execução do comando.

  ====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

Como visualizar a saída completa de um comando na conta de armazenamento associada

Para acessar a saída de um comando, os usuários precisam do acesso apropriado ao blob de armazenamento, incluindo ter as atribuições de função do Azure necessárias e garantir que quaisquer restrições de rede sejam configuradas corretamente.

Para atribuições de função, um usuário deve ter as seguintes atribuições de função no contêiner de blob ou em sua Conta de Armazenamento:

  • Uma função de acesso a dados, como Storage Blob Data Reader ou Storage Blob Data Contributor
  • A função Leitor do Azure Resource Manager, no mínimo

Para obter informações sobre como atribuir funções a contas de armazenamento, consulte Atribuir uma função do Azure para acesso a dados de blob.

Para restrições de rede, se a Conta de Armazenamento permitir o acesso de ponto de extremidade público por meio de um firewall, o firewall deverá ser configurado com uma regra de rede para permitir a passagem do endereço IP desse usuário. Se ele permitir apenas acesso privado ao ponto de extremidade, um usuário deverá fazer parte de uma rede que tenha acesso ao ponto de extremidade privado.

Para obter informações sobre como permitir o acesso através do firewall da conta de armazenamento usando regras de rede ou pontos de extremidade privados, consulte a respetiva documentação.

Com as permissões necessárias e o acesso configurado, você pode usar o link ou o comando do resumo de saída para baixar o arquivo de saída compactado (tar.gz).

Você também pode baixá-lo por meio do portal do Azure:

  1. No portal do Azure, navegue até a Conta de Armazenamento.
  2. Nos detalhes da conta de armazenamento, selecione Navegador de armazenamento no menu de navegação do lado esquerdo.
  3. Nos detalhes do navegador de armazenamento, selecionar Contentores de blobs.
  4. Selecione o contêiner de blob.
  5. Selecione o arquivo de saída no comando. O nome do arquivo pode ser identificado a partir do resumo de saída. Além disso, o timestamp da última modificação está alinhado ao momento em que o comando foi executado.
  6. Você pode gerir e descarregar o arquivo de saída a partir do pop-out Visão geral.