Partilhar via


Conectar-se ao Azure Resource Manager em seu dispositivo Azure Stack Edge

APLICA-SE A: Sim para Pro GPU SKUAzure Stack Edge Pro - GPUSim para Pro 2 SKUAzure Stack Edge Pro 2Sim para Pro R SKUAzure Stack Edge Pro RSim para Mini R SKUAzure Stack Edge Mini R

O Azure Resource Manager proporciona uma camada de gestão que lhe permite criar, atualizar e eliminar recursos na subscrição do Azure. O dispositivo Azure Stack Edge suporta as mesmas APIs do Azure Resource Manager para criar, atualizar e eliminar VMs numa subscrição local. Este suporte permite-lhe gerir o dispositivo de uma forma consistente com a nuvem.

Este artigo descreve como se conectar às APIs locais em seu dispositivo Azure Stack Edge por meio do Azure Resource Manager usando o Azure PowerShell.

Pontos de extremidade no dispositivo Azure Stack Edge

A tabela a seguir resume os vários pontos de extremidade expostos em seu dispositivo, os protocolos suportados e as portas para acessar esses pontos de extremidade. Ao longo do artigo, você encontrará referências a esses pontos de extremidade.

# Ponto final Protocolos suportados Porto usado Utilizado para
1. Azure Resource Manager https 443 Para conectar-se ao Azure Resource Manager para automação
2. Serviço de token de segurança https 443 Para autenticar via acesso e atualizar tokens
3. Blob* https 443 Para conectar-se ao armazenamento de Blob via REST

* A conexão com o ponto de extremidade de armazenamento de blob não é necessária para se conectar ao Gerenciador de Recursos do Azure.

Conectando-se ao fluxo de trabalho do Azure Resource Manager

O processo de conexão com APIs locais do dispositivo usando o Azure Resource Manager requer as seguintes etapas:

Passo # Faça este passo... .. neste local.
1. Configurar seu dispositivo Azure Stack Edge Interface do usuário da Web local
2. Criar e instalar certificados Interface do usuário da Web cliente/local do Windows
3. Revisar e configurar os pré-requisitos Cliente Windows
4. Configurar o Azure PowerShell no cliente Cliente Windows
5. Modificar arquivo de host para resolução de nome de ponto de extremidade Cliente Windows ou servidor DNS
6. Verifique se o nome do ponto de extremidade está resolvido Cliente Windows
7. Usar cmdlets do Azure PowerShell para verificar a conexão com o Azure Resource Manager Cliente Windows

As seções a seguir detalham cada uma das etapas acima na conexão com o Azure Resource Manager.

Pré-requisitos

Antes de começar, verifique se o cliente usado para se conectar ao dispositivo por meio do Azure Resource Manager está usando o TLS 1.2. Para obter mais informações, vá para Configurar o TLS 1.2 no cliente Windows que acessa o dispositivo Azure Stack Edge.

Etapa 1: Configurar o dispositivo Azure Stack Edge

Execute as etapas a seguir na interface do usuário da Web local do seu dispositivo Azure Stack Edge.

  1. Conclua as configurações de rede para seu dispositivo Azure Stack Edge.

    Página

    Anote o endereço IP do dispositivo. Você usará esse IP mais tarde.

  2. Configure o nome do dispositivo e o domínio DNS na página Dispositivo . Anote o nome do dispositivo e o domínio DNS, pois você os usará mais tarde.

    Página

    Importante

    O nome do dispositivo, domínio DNS será usado para formar os pontos de extremidade que são expostos. Use o Gerenciador de Recursos do Azure e os pontos de extremidade de Blob da página Dispositivo na interface do usuário da Web local.

Etapa 2: Criar e instalar certificados

Os certificados garantem que sua comunicação seja confiável. No dispositivo Azure Stack Edge, os certificados de dispositivo autoassinado, blob e Azure Resource Manager são gerados automaticamente. Opcionalmente, você também pode trazer seu próprio blob assinado e certificados do Azure Resource Manager.

Quando você traz um certificado assinado por conta própria, você também precisa da cadeia de assinatura correspondente do certificado. Para a cadeia de assinatura, o Gerenciador de Recursos do Azure e os certificados de blob no dispositivo, você precisa dos certificados correspondentes na máquina cliente também para autenticar e se comunicar com o dispositivo.

Para se conectar ao Gerenciador de Recursos do Azure, você deve criar ou obter certificados de cadeia de assinatura e ponto de extremidade, importar esses certificados em seu cliente Windows e, finalmente, carregar esses certificados no dispositivo.

Criar certificados

Somente para uso de teste e desenvolvimento, você pode usar o Windows PowerShell para criar certificados em seu sistema local. Ao criar os certificados para o cliente, siga estas diretrizes:

  1. Primeiro, você precisa criar um certificado raiz para a cadeia de assinatura. Para obter mais informações, consulte as etapas para Criar certificados de cadeia de assinatura.

  2. Em seguida, você pode criar os certificados de ponto de extremidade para o Azure Resource Manager e blob (opcional). Você pode obter esses pontos de extremidade na página Dispositivo na interface do usuário da Web local. Consulte as etapas para Criar certificados de ponto de extremidade.

  3. Para todos esses certificados, certifique-se de que o nome da entidade e o nome alternativo da entidade estejam em conformidade com as seguintes diretrizes:

    Type Nome do assunto (SN) Nome alternativo da entidade (SAN) Exemplo de nome do assunto
    Azure Resource Manager management.<Device name>.<Dns Domain> login.<Device name>.<Dns Domain>
    management.<Device name>.<Dns Domain>
    management.mydevice1.microsoftdatabox.com
    Armazenamento de blobs* *.blob.<Device name>.<Dns Domain> *.blob.< Device name>.<Dns Domain> *.blob.mydevice1.microsoftdatabox.com
    Certificado único Multi-SAN para ambos os endpoints <Device name>.<dnsdomain> login.<Device name>.<Dns Domain>
    management.<Device name>.<Dns Domain>
    *.blob.<Device name>.<Dns Domain>
    mydevice1.microsoftdatabox.com

* O armazenamento de Blob não é necessário para se conectar ao Azure Resource Manager. Ele está listado aqui caso você esteja criando contas de armazenamento local no seu dispositivo.

Para obter mais informações sobre certificados, vá para Como carregar certificados no seu dispositivo e importar certificados nos clientes que acessam seu dispositivo.

Carregar certificados no dispositivo

Os certificados que você criou na etapa anterior estão no repositório pessoal do seu cliente. Esses certificados precisam ser exportados em seu cliente para arquivos de formato apropriado que podem ser carregados para seu dispositivo.

  1. O certificado raiz deve ser exportado como um arquivo de formato DER com extensão de arquivo .cer . Para obter etapas detalhadas, consulte Exportar certificados como um arquivo de formato .cer.

  2. Os certificados de ponto de extremidade devem ser exportados como arquivos .pfx com chaves privadas. Para obter etapas detalhadas, consulte Exportar certificados como arquivo .pfx com chaves privadas.

  3. Os certificados raiz e de ponto de extremidade são então carregados no dispositivo usando a opção +Adicionar certificado na página Certificados na interface do usuário da Web local. Para carregar os certificados, siga as etapas em Carregar certificados.

Importar certificados no cliente que executa o Azure PowerShell

O cliente Windows onde você invoca as APIs do Azure Resource Manager precisa estabelecer confiança com o dispositivo. Para esse fim, os certificados que você criou na etapa anterior devem ser importados no cliente Windows para o armazenamento de certificados apropriado.

  1. O certificado raiz que você exportou como o formato DER com extensão .cer agora deve ser importado nas Autoridades de Certificação Raiz Confiáveis no sistema cliente. Para obter etapas detalhadas, consulte Importar certificados para o armazenamento de Autoridades de Certificação Raiz Confiáveis.

  2. Os certificados de ponto de extremidade exportados como . pfx devem ser exportados como .cer. Esse .cer é então importado no armazenamento de certificados pessoais no seu sistema. Para obter etapas detalhadas, consulte Importar certificados para armazenamento pessoal.

Etapa 3: Instalar o PowerShell no cliente

Seu cliente Windows deve atender aos seguintes pré-requisitos:

  1. Execute o Windows PowerShell 5.1. Você deve ter o Windows PowerShell 5.1. Para verificar a versão do PowerShell em seu sistema, execute o seguinte cmdlet:

    $PSVersionTable.PSVersion
    

    Compare a versão principal e certifique-se de que é 5.1 ou posterior.

    Se tiver uma versão desatualizada, consulte Atualizar o Windows PowerShell existente.

    Se você não tiver o PowerShell 5.1, siga Instalando o Windows PowerShell.

    Um exemplo de saída é mostrado abaixo.

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    Try the new cross-platform PowerShell https://aka.ms/pscore6
    PS C:\windows\system32> $PSVersionTable.PSVersion
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      1      19041  906
    
  2. Você pode acessar a Galeria do PowerShell.

    Execute o PowerShell como administrador. Verifique se a versão do PowerShellGet é mais antiga que 2.2.3. Além disso, verifique se o PSGallery está registrado como um repositório.

    Install-Module PowerShellGet -MinimumVersion 2.2.3
    Import-Module -Name PackageManagement -ErrorAction Stop
    Get-PSRepository -Name "PSGallery"
    

    Um exemplo de saída é mostrado abaixo.

    PS C:\windows\system32> Install-Module PowerShellGet -MinimumVersion 2.2.3
    PS C:\windows\system32> Import-Module -Name PackageManagement -ErrorAction Stop
    PS C:\windows\system32> Get-PSRepository -Name "PSGallery"
    Name                      InstallationPolicy   SourceLocation
    ----                      ------------------   --------------
    PSGallery                 Trusted              https://www.powershellgallery.com/api/v2
    

Se o repositório não for confiável ou se você precisar de mais informações, consulte Validar a acessibilidade da Galeria do PowerShell.

Etapa 4: Configurar o Azure PowerShell no cliente

Instale os módulos do Azure PowerShell em seu cliente que funcionam com seu dispositivo.

  1. Execute o PowerShell como um administrador. Você deve ter acesso à galeria do PowerShell.

  2. Primeiro, verifique se não existem versões e Az módulos existentes no AzureRM seu cliente. Para verificar, execute os seguintes comandos:

    # Check existing versions of AzureRM modules
    Get-InstalledModule -Name AzureRM -AllVersions
    
    # Check existing versions of Az modules
    Get-InstalledModule -Name Az -AllVersions
    

    Se houver versões existentes, use o Uninstall-Module cmdlet para desinstalar. Para obter mais informações, consulte,

  3. Para instalar os módulos necessários do Azure PowerShell a partir da Galeria do PowerShell, execute o seguinte comando:

    • Se o seu cliente estiver usando o PowerShell Core versão 7.0 ou posterior:

      # Install the Az.BootStrapper module. Select Yes when prompted to install NuGet.
      
      Install-Module -Name Az.BootStrapper
      
      # Install and import the API Version Profile into the current PowerShell session.
      
      Use-AzProfile -Profile 2020-09-01-hybrid -Force
      
      # Confirm the installation of PowerShell
      Get-Module -Name "Az*" -ListAvailable
      
    • Se o seu cliente estiver usando o PowerShell 5.1 ou posterior:

      #Install the Az module version 1.10.0
      
      Install-Module -Name Az -RequiredVersion 1.10.0
      
  4. Certifique-se de que você tem a versão correta do módulo Az em execução no final da instalação.

    Se você usou o PowerShell 7 ou posterior, a saída de exemplo a seguir indica que os módulos Az versão 2.0.1 (ou posterior) foram instalados com êxito.

    
    PS C:\windows\system32> Install-Module -Name Az.BootStrapper
    PS C:\windows\system32> Use-AzProfile -Profile 2020-09-01-hybrid -Force
    Loading Profile 2020-09-01-hybrid
    PS C:\windows\system32> Get-Module -Name "Az*" -ListAvailable
    

    Se você usou o PowerShell 5.1 ou posterior, a saída de exemplo a seguir indica que os módulos Az versão 1.10.0 foram instalados com êxito.

    PS C:\WINDOWS\system32> Get-InstalledModule -Name Az -AllVersions
    Version     Name     Repository     Description
    -------     ----     ----------     -----------
    1.10.0      Az       PSGallery      Mic...
    
    PS C:\WINDOWS\system32>
    

Etapa 5: Modificar o arquivo host para resolução de nome de ponto de extremidade

Agora você adicionará o endereço IP do dispositivo a:

  • O arquivo host no cliente, OU,
  • A configuração do servidor DNS

Importante

Recomendamos que você modifique a configuração do servidor DNS para resolução de nomes de pontos de extremidade.

No cliente Windows que você está usando para se conectar ao dispositivo, execute as seguintes etapas:

  1. Inicie o Bloco de Notas como administrador e, em seguida, abra o ficheiro de anfitriões localizado em C:\Windows\System32\Drivers\etc.

    Arquivo de hosts do Windows Explorer

  2. Adicione as seguintes entradas ao seu arquivo hosts substituindo por valores apropriados para o seu dispositivo:

    <Device IP> login.<appliance name>.<DNS domain>
    <Device IP> management.<appliance name>.<DNS domain>
    <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
    

    Importante

    A entrada no arquivo hosts deve corresponder exatamente àquela fornecida para se conectar ao Azure Resource Manager em uma etapa posterior. Certifique-se de que a entrada de domínio DNS aqui está toda em minúsculas. Para obter os valores para o <appliance name> e <DNS domain>, vá para a página Dispositivo na interface do usuário local do seu dispositivo.

    Você salvou o IP do dispositivo da interface do usuário da Web local em uma etapa anterior.

    A login.<appliance name>.<DNS domain> entrada é o ponto de extremidade para o Serviço de Token de Segurança (STS). A STS é responsável pela criação, validação, renovação e cancelamento de tokens de segurança. O serviço de token de segurança é usado para criar o token de acesso e o token de atualização usado para comunicação contínua entre o dispositivo e o cliente.

    O ponto de extremidade para armazenamento de blob é opcional ao se conectar ao Gerenciador de Recursos do Azure. Esse ponto de extremidade é necessário ao transferir dados para o Azure por meio de contas de armazenamento.

  3. Para referência, use a imagem a seguir. Salve o arquivo hosts .

    hospeda o arquivo no Bloco de Notas

Etapa 6: Verificar a resolução do nome do ponto de extremidade no cliente

Verifique se o nome do ponto de extremidade está resolvido no cliente que você está usando para se conectar ao dispositivo.

  1. Você pode usar o ping.exe utilitário de linha de comando para verificar se o nome do ponto de extremidade foi resolvido. Dado um endereço IP, o ping comando retorna o nome de host TCP/IP do computador que você está rastreando.

    Adicione a -a opção à linha de comando, conforme mostrado no exemplo abaixo. Se o nome do host for retornável, ele também retornará essas informações potencialmente valiosas na resposta.

    Ping no prompt de comando

Etapa 7: Definir o ambiente do Azure Resource Manager

Defina o ambiente do Azure Resource Manager e verifique se a comunicação entre o dispositivo e o cliente através do Azure Resource Manager está a funcionar bem. Siga os seguintes passos para esta verificação:

  1. Utilize o cmdlet Add-AzEnvironment para garantir que a comunicação através do Azure Resource Manager está a funcionar corretamente e as chamadas à API estão a passar pela porta dedicada ao Azure Resource Manager – 443.

    O cmdlet Add-AzEnvironment adiciona pontos finais e metadados para permitir aos cmdlets do Azure Resource Manager ligarem a uma nova instância do Azure Resource Manager.

    Importante

    A URL de ponto de extremidade do Azure Resource Manager fornecida no cmdlet a seguir diferencia maiúsculas de minúsculas. Verifique se a URL do ponto de extremidade está toda em minúsculas e corresponde ao que você forneceu no arquivo hosts. Se o caso não corresponder, você verá um erro.

    Add-AzEnvironment -Name <Environment Name> -ARMEndpoint "https://management.<appliance name>.<DNSDomain>/"
    

    Um exemplo de saída é mostrado abaixo:

    PS C:\WINDOWS\system32> Add-AzEnvironment -Name AzASE -ARMEndpoint "https://management.myasegpu.wdshcsso.com/"
    
    Name  Resource Manager Url                      ActiveDirectory Authority
    ----  --------------------                      -------------------------
    AzASE https://management.myasegpu.wdshcsso.com/ https://login.myasegpu.wdshcsso.c...
    
  2. Defina o ambiente como Azure Stack Edge e a porta a ser usada para chamadas do Azure Resource Manager como 443. Você define o ambiente de duas maneiras:

    • Defina o ambiente. Escreva o seguinte comando:

      Set-AzEnvironment -Name <Environment Name>
      

      Aqui está um exemplo de saída.

      PS C:\WINDOWS\system32> Set-AzEnvironment -Name AzASE
      
      Name  Resource Manager Url                      ActiveDirectory Authority
      ----  --------------------                      -------------------------
      AzASE https://management.myasegpu.wdshcsso.com/ https://login.myasegpu.wdshcsso.c...
      

      Para obter mais informações, vá para Set-AzEnvironment.

    • Defina o ambiente embutido para cada cmdlet que você executar. Isso garante que todas as chamadas de API estejam passando pelo ambiente correto. Por padrão, as chamadas passariam pelo público do Azure, mas você deseja que elas passem pelo ambiente definido para o dispositivo Azure Stack Edge.

    • Veja mais informações sobre como alternar ambientes Az.

  3. Chame as APIs do dispositivo local para autenticar as ligações ao Azure Resource Manager.

    1. Essas credenciais são para uma conta de máquina local e são usadas exclusivamente para acesso à API.

    2. Você pode se conectar via login-AzAccount ou via Connect-AzAccount comando.

      1. Para entrar, digite o seguinte comando.

        $pass = ConvertTo-SecureString "<Your password>" -AsPlainText -Force;
        $cred = New-Object System.Management.Automation.PSCredential("EdgeArmUser", $pass)
        Connect-AzAccount -EnvironmentName AzASE -TenantId aaaabbbb-0000-cccc-1111-dddd2222eeee -credential $cred
        

        Use o ID do locatário aaaabbbb-0000-cccc-1111-dddd2222eeeeee como neste caso é codificado. Use o seguinte nome de usuário e senha.

        Aqui está um exemplo de saída para o Connect-AzAccount:

        PS C:\windows\system32> $pass = ConvertTo-SecureString "<Your password>" -AsPlainText -Force;
        PS C:\windows\system32> $cred = New-Object System.Management.Automation.PSCredential("EdgeArmUser", $pass)
        PS C:\windows\system32> Connect-AzAccount -EnvironmentName AzASE -TenantId aaaabbbb-0000-cccc-1111-dddd2222eeee -credential $cred
        
        Account       SubscriptionName   TenantId            Environment
        -------       ----------------   --------            -----------
        EdgeArmUser@localhost Default Provider Subscription aaaabbbb-0000-cccc-1111-dddd2222eeee AzASE
        
        PS C:\windows\system32>
        

        Uma maneira alternativa de entrar é usar o login-AzAccount cmdlet.

        login-AzAccount -EnvironmentName <Environment Name> -TenantId aaaabbbb-0000-cccc-1111-dddd2222eeee

        Aqui está um exemplo de saída.

        PS C:\WINDOWS\system32> login-AzAccount -EnvironmentName AzASE -TenantId aaaabbbb-0000-cccc-1111-dddd2222eeee
        
        Account               SubscriptionName              TenantId
        -------               ----------------              --------
        EdgeArmUser@localhost Default Provider Subscription c0257de7-538f-415c-993a-1b87a...
        
        PS C:\WINDOWS\system32>
        
  4. Para verificar se a conexão com o dispositivo está funcionando, use o Get-AzResource comando. Este comando deve retornar todos os recursos que existem localmente no dispositivo.

    Aqui está um exemplo de saída.

    PS C:\WINDOWS\system32> Get-AzResource
    
    Name              : aseimagestorageaccount
    ResourceGroupName : ase-image-resourcegroup
    ResourceType      : Microsoft.Storage/storageaccounts
    Location          : dbelocal
    ResourceId        : /subscriptions/.../resourceGroups/ase-image-resourcegroup/providers/Microsoft.Storage/storageac
                        counts/aseimagestorageaccount
    Tags              :
    
    Name              : myaselinuxvmimage1
    ResourceGroupName : ASERG
    ResourceType      : Microsoft.Compute/images
    Location          : dbelocal
    ResourceId        : /subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Compute/images/myaselinuxvmimage1
    Tags              :
    
    Name              : ASEVNET
    ResourceGroupName : ASERG
    ResourceType      : Microsoft.Network/virtualNetworks
    Location          : dbelocal
    ResourceId        : /subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Network/virtualNetworks/ASEVNET
    Tags              :
    
    PS C:\WINDOWS\system32>
    

Se você tiver problemas com suas conexões do Azure Resource Manager, consulte Solucionar problemas do Azure Resource Manager para obter orientação.

Importante

A conexão com o Azure Resource Manager expira a cada 1,5 horas ou se o dispositivo Azure Stack Edge for reiniciado. Se isso acontecer, todos os cmdlets que você executar retornarão mensagens de erro informando que você não está mais conectado ao Azure. Terá de iniciar sessão novamente.

Mudar de ambientes

Pode ser necessário alternar entre dois ambientes.

Execute Disconnect-AzAccount o comando para alternar para um arquivo .AzEnvironment Se você usar Set-AzEnvironment e Login-AzAccount sem usar Disconnect-AzAccount, o ambiente não será trocado.

Os exemplos a seguir mostram como alternar entre dois ambientes AzASE1 e AzASE2.

Primeiro, liste todos os ambientes existentes no seu cliente.

PS C:\WINDOWS\system32> Get-AzEnvironment​
Name    Resource Manager Url     ActiveDirectory Authority​
----    --------------------      -------------------------​
AzureChinaCloud   https://management.chinacloudapi.cn/                 https://login.chinacloudapi.cn/​
AzureCloud        https://management.azure.com/                        https://login.microsoftonline.com/​
AzureGermanCloud  https://management.microsoftazure.de/                https://login.microsoftonline.de/​
AzDBE1            https://management.HVTG1T2-Test.microsoftdatabox.com https://login.hvtg1t2-test.microsoftdatabox.com/adfs/​
AzureUSGovernment https://management.usgovcloudapi.net/                https://login.microsoftonline.us/​
AzDBE2            https://management.CVV4PX2-Test.microsoftdatabox.com https://login.cvv4px2-test.microsoftdatabox.com/adfs/​

Em seguida, obtenha a qual ambiente você está conectado no momento por meio do Gerenciador de Recursos do Azure.

PS C:\WINDOWS\system32> Get-AzContext |fl *​
​​
Name               : Default Provider Subscription (...) - EdgeArmUser@localhost​
Account            : EdgeArmUser@localhost​
Environment        : AzDBE2​
Subscription       : ...​
Tenant             : aaaabbbb-0000-cccc-1111-dddd2222eeee​
TokenCache         : Microsoft.Azure.Commands.Common.Authentication.ProtectedFileTokenCache​
VersionProfile     :​
ExtendedProperties : {}​

Agora você deve se desconectar do ambiente atual antes de alternar para o outro ambiente.

PS C:\WINDOWS\system32> Disconnect-AzAccount​
​​
Id                    : EdgeArmUser@localhost​
Type                  : User​
Tenants               : {aaaabbbb-0000-cccc-1111-dddd2222eeee}​
AccessToken           :​
Credential            :​
TenantMap             : {}​
CertificateThumbprint :​
ExtendedProperties    : {[Subscriptions, ...], [Tenants, aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e]}

Entre no outro ambiente. A saída de exemplo é apresentada abaixo.

PS C:\WINDOWS\system32> Login-AzAccount -Environment "AzDBE1" -TenantId $ArmTenantId​
​
Account     SubscriptionName   TenantId        Environment​
-------     ----------------   --------        -----------​
EdgeArmUser@localhost Default Provider Subscription aaaabbbb-0000-cccc-1111-dddd2222eeee AzDBE1

Execute este cmdlet para confirmar a qual ambiente você está conectado.

PS C:\WINDOWS\system32> Get-AzContext |fl *​
​​
Name               : Default Provider Subscription (...) - EdgeArmUser@localhost​
Account            : EdgeArmUser@localhost​
Environment        : AzDBE1​
Subscription       : ...
Tenant             : aaaabbbb-0000-cccc-1111-dddd2222eeee​
TokenCache         : Microsoft.Azure.Commands.Common.Authentication.ProtectedFileTokenCache​
VersionProfile     :​
ExtendedProperties : {}

Agora você mudou para o ambiente pretendido.