Compartilhar via


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

Pode haver situações em que um usuário precise investigar e resolver problemas com um computador bare-metal local (BMM). O Nexus do Operador fornece o az networkcloud baremetalmachine run-read-command para que os usuários possam executar uma lista coletada de comandos somente leitura para obter informações de um BMM.

O comando produz um arquivo de saída que contém 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 Cluster. Há também um método em versão prévia onde usuários podem configurar o recurso de Cluster com uma conta de armazenamento e identidade que tenha acesso à conta de armazenamento para receber a saída.

Pré-requisitos

  1. Instale a última versão das extensões apropriadas da CLI
  2. Verifique se o BMM de destino deve ter seu poweredState definido como On e ter seu readyState definido como True
  3. Obter o nome do grupo de recursos gerenciados (cluster_MRG) que você criou para o recurso Cluster

Verifique o acesso à conta de armazenamento do Gerenciador de Cluster

Observação

O método de saída da conta de armazenamento do Gerenciador de Cluster será preterido no futuro, assim que a integração do Cluster com Serviços Confiáveis estiver concluída e a opção de armazenamento gerenciado pelo usuário tiver suporte total.

Se estiver usando o método de armazenamento do Gerenciador de Cluster, verifique se você tem acesso à conta de armazenamento do Gerenciador de Cluster:

  1. No portal do Azure, navegue até a conta de Armazenamento do Gerenciador de Cluster.
  2. Nos detalhes da Conta de armazenamento, selecione Navegador de armazenamento no menu de navegação no lado esquerdo.
  3. Nos detalhes do Navegador de armazenamento, selecione Contêineres de blob.
  4. Se você encontrar um 403 This request is not authorized to perform this operation. ao acessar a conta de armazenamento, as configurações de firewall da conta de armazenamento precisam ser atualizadas para incluir o endereço de IP público.
  5. Solicite acesso criando um tíquete de suporte pelo Portal no recurso Gerenciador de Cluster. Forneça o endereço de IP público que requer acesso.

VERSÃO PRÉVIA: Enviar a saída do comando para uma conta de armazenamento especificada pelo usuário

Importante

Observe que este método de especificar uma conta de armazenamento do usuário para a saída do comando está em versão prévia. Este método deve ser usado apenas com contas de armazenamento do usuário que não tenham o firewall ativado. Se o seu ambiente exigir que o firewall da conta de armazenamento esteja ativado, use o método de saída existente do Gerenciador de Cluster.

Crie e configure recursos de armazenamento

  1. Crie uma conta de armazenamento ou identifique uma conta de armazenamento existente que você deseja usar. Consulte Criar uma conta de armazenamento do Azure.
  2. Crie um contêiner de armazenamento de blobs na conta de armazenamento. Consulte Criar um contêiner.
  3. Atribua a função "Colaborador de Dados de Blob de Armazenamento" a usuários e identidades gerenciadas que precisam de acesso à saída do run-data-extract.
    1. Confira Atribuir uma função do Azure para acesso a dados de blob. A função também deve ser atribuída a uma identidade gerenciada atribuída pelo usuário ou à própria identidade gerenciada atribuída pelo sistema do cluster.
    2. Para obter mais informações sobre identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
    3. Se estiver usando a identidade atribuída pelo sistema do Cluster, essa identidade precisa ser adicionada ao cluster antes que possa receber acesso.
    4. Ao atribuir uma função à identidade atribuída pelo sistema do cluster, certifique-se de selecionar o recurso com o tipo "Cluster (Nexus do Operador)."

Configure o cluster para usar uma identidade gerenciada atribuída pelo usuário para acesso ao armazenamento

Use este comando para criar um cluster com uma conta de armazenamento gerenciada pelo usuário e uma identidade atribuída pelo usuário. Observe que este exemplo é um comando abreviado que apenas realça os campos pertinentes para adicionar o armazenamento gerenciado pelo usuário. Não é o comando completo de criação de cluster.

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

Use este comando para configurar um cluster existente para uma conta de armazenamento fornecida pelo usuário e uma identidade atribuída pelo usuário. O comando de atualização também pode ser usado para alterar a localização da conta de armazenamento e a identidade, se necessário.

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

Configure o cluster para usar uma identidade gerenciada atribuída pelo sistema para acesso ao armazenamento

Use este comando para criar um cluster com uma conta de armazenamento gerenciada pelo usuário e uma identidade atribuída pelo sistema. Observe que este exemplo é um comando abreviado que apenas realça os campos pertinentes para adicionar o armazenamento gerenciado pelo usuário. Não é o comando completo de criação de cluster.

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

Use este comando para configurar um cluster existente para uma conta de armazenamento fornecida pelo usuário e usar sua própria identidade atribuída pelo sistema. O comando de atualização também pode ser usado para alterar a localização da conta de armazenamento.

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

Para alterar o cluster de uma identidade atribuída pelo usuário para uma identidade atribuída pelo sistema, primeiro é necessário limpar as CommandOutputSettings usando o comando na próxima seção e, em seguida, configurá-las usando este comando.

Limpar as CommandOutputSettings do cluster

As CommandOutputSettings podem ser limpas, redirecionando a saída do run-data-extract de volta para o armazenamento do gerenciador de cluster. No entanto, não é recomendável, pois é menos seguro, e essa opção será removida em uma versão futura.

No entanto, as CommandOutputSettings precisam ser limpas se estiver alternando de uma identidade atribuída pelo usuário para uma identidade atribuída pelo sistema.

Use este comando para limpar as 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}}'

Exibir a ID principal para a identidade gerenciada

A ID do recurso de identidade pode ser encontrada selecionando "Exibir JSON" no recurso de identidade; a ID está no topo do painel que aparece. A URL do contêiner pode ser encontrada na guia Configurações -> Propriedades do recurso do contêiner.

A CLI também pode ser usada para exibir a identidade e os dados da ID de entidade de segurança associados dentro do cluster.

Exemplo:

az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>

Exemplo de identidade atribuída pelo sistema:

    "identity": {
        "principalId": "2cb564c1-b4e5-4c71-bbc1-6ae259aa5f87",
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "type": "SystemAssigned"
    },

Exemplo de identidade atribuída pelo usuário:

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

Executar um comando run-read

O comando run-read permite que você execute 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 dos que podem fazer mudanças. Por exemplo, run-read-command pode usar kubectl get, mas não kubectl apply. Ao usar esses comandos, você precisa colocar todas as palavras no campo “command”. 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 baremetal, como ipmitool e racadm.

Alguns dos comandos de leitura em execução exigem que argumentos específicos sejam fornecidos para impor os recursos somente leitura dos comandos. Um exemplo de comandos de leitura em execução que exigem argumentos específicos é o comando Mellanox permitido mstconfig, que exige que o argumento query seja fornecido para impor somente leitura.

Aviso

A Microsoft não fornece nem oferece suporte a nenhuma chamada da API do Operator Nexus que espere receber um nome de usuário e/ou senha em texto não criptografado. Observe que todos os valores enviados serão registrados e considerados segredos expostos, os quais devem ser rotacionados e revogados. O método documentado pela Microsoft para usar segredos com segurança é armazená-los em um Azure Key Vault. Se você tiver dúvidas ou preocupações específicas, envie uma solicitação pelo Portal do Azure.

Esta lista mostra os comandos que você pode usar. Os comandos no *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
  • 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 o argumento query)
  • nc-toolbox nc-toolbox-runread mstflint (requer o argumento query)
  • nc-toolbox nc-toolbox-runread mstlink (requer o argumento query)
  • nc-toolbox nc-toolbox-runread mstfwmanager (requer o argumento query)
  • nc-toolbox nc-toolbox-runread mlx_temp

A sintaxe do 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>"

Vários comandos podem ser fornecidos no formato json para a opção --commands.

Para um comando com vários argumentos, forneça como uma lista para o parâmetro arguments. Consulte a Abreviação da CLI do Azure para obter instruções sobre como construir a estrutura --commands.

Esses comandos podem ser de execução prolongada, portanto, 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.

Esse comando é executado de forma síncrona. Se você quiser ignorar a espera pela conclusão do comando, especifique as opções de --no-wait --debug. Para obter mais informações, consulte como rastrear operações assíncronas.

Quando um argumento opcional --output-directory é fornecido, o resultado da saída é baixado e extraído para o diretório local.

Aviso

Usar o argumento --output-directory substituirá quaisquer arquivos no diretório local que tenham o mesmo nome que os novos arquivos 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 comando hostname e um 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>"

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

Como exibir a saída de um az networkcloud baremetalmachine run-read-command na conta de Armazenamento do Gerenciador de Cluster

Este guia orienta você pelo acesso ao arquivo de saída criado na conta de Armazenamento do Gerenciador de Cluster quando um az networkcloud baremetalmachine run-read-command é executado em um servidor. O nome do arquivo é identificado na saída de status az rest.

  1. Abra o Grupo de Recursos Gerenciados do Gerenciador de Cluster para o Cluster em que o servidor está hospedado e selecione a Conta de armazenamento.

  2. Nos detalhes da Conta de armazenamento, selecione Navegador de armazenamento no menu de navegação no lado esquerdo.

  3. Nos detalhes do Navegador de armazenamento, selecione Contêineres de blob.

  4. Selecione o contêiner de blob baremetal-run-command-output.

  5. A Conta de Armazenamento pode ser bloqueada, resultando em 403 This request is not authorized to perform this operation. devido às restrições de rede ou de firewall. Consulte as seções armazenamento do gerenciador do cluster ou armazenamento gerenciado pelo cliente para procedimentos de verificação de acesso.

  6. Selecione o arquivo de saída no comando run-read. O nome do arquivo pode ser identificado no comando az rest --method get. Além disso, o carimbo de data/hora Última modificação se alinha com a data/hora em que o comando foi executado.

  7. Você pode gerenciar e baixar o arquivo de saída no pop-out Visão geral.

VERSÃO PRÉVIA: Verifique o status do comando e exiba a saída em uma conta de armazenamento especificada pelo usuário

Uma amostra de saída é exibida. Imprime os 4.000 caracteres principais 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. Você pode usar o link para baixar o arquivo de saída compactado (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