Usar o Docker para executar o PowerShell para Azure Stack HubUse Docker to run PowerShell for Azure Stack Hub

Neste artigo, você pode usar o Docker para criar um contêiner no qual executar a versão do PowerShell necessária para trabalhar com as várias interfaces.In this article, you can use Docker to create a container on which to run the version of PowerShell that's required for working with the various interfaces. Você pode encontrar instruções para usar ambos os módulos AzureRM e os módulos AZ mais recentes.You can find instructions for using both AzureRM modules and the latest Az modules. AzureRM requer um contêiner baseado no Windows.AzureRM requires a Windows-based container. AZ usa um contêiner baseado em Linux.Az uses a Linux-based container.

Pré-requisitos do DockerDocker prerequisites

Instalar o DockerInstall Docker

  1. Instale o Docker.Install Docker.

  2. Em um programa de linha de comando, como PowerShell ou bash, digite:In a command-line program, such as PowerShell or Bash, enter:

    docker --version
    

Configurar uma entidade de serviço para usar o PowerShellSet up a service principal for using PowerShell

Para usar o PowerShell para acessar recursos no Hub Azure Stack, você precisa de uma entidade de serviço em seu locatário do Azure Active Directory (AD do Azure).To use PowerShell to access resources in Azure Stack Hub, you need a service principal in your Azure Active Directory (Azure AD) tenant. Você delega permissões com o RBAC (controle de acesso baseado em função do usuário).You delegate permissions with user role-based access control (RBAC). Talvez seja necessário solicitar a entidade de serviço do seu operador de nuvem.You may need to request the service principal from your cloud operator.

  1. Para configurar sua entidade de serviço, siga as instruções em conceder aos aplicativos acesso a Azure Stack recursos do Hub criando entidades de serviço.To set up your service principal, follow the instructions in Give applications access to Azure Stack Hub resources by creating service principals.

  2. Anote a ID do aplicativo, o segredo, sua ID de locatário e a ID de objeto para uso posterior.Note the application ID, the secret, your tenant ID, and object ID for later use.

Executar o PowerShell no DockerRun PowerShell in Docker

Nestas instruções, você executará uma imagem de contêiner baseada em Linux que contém o PowerShell e os módulos necessários para Azure Stack Hub.In these instructions, you will run a Linux-based container image that contains the PowerShell and the required modules for Azure Stack Hub.

  1. Você precisa executar o Docker usando o contêiner do Linux.You need to run Docker by using Linux container. Ao executar o Docker, alterne para contêineres do Linux.When you run Docker, switch to Linux containers.

  2. Execute o Docker de um computador que tenha ingressado no mesmo domínio que Azure Stack Hub.Run Docker from a machine that's joined to the same domain as Azure Stack Hub. Se você estiver usando o Kit de Desenvolvimento do Azure Stack (ASDK), precisará instalar a VPN em seu computador remoto.If you are using the Azure Stack Development Kit (ASDK), you need to install the VPN on your remote machine.

Instalar o módulo AZ Azure Stack Hub em um contêiner do LinuxInstall Azure Stack Hub Az module on a Linux container

  1. Na linha de comando, execute o seguinte comando do Docker para executar o PowerShell em um contêiner do Ubuntu:From your command line, run the following Docker command to run PowerShell in an Ubuntu container:

    docker run -it mcr.microsoft.com/azurestack/powershell
    

    Você pode executar o Ubuntu, Debian ou CentOS.You can run Ubuntu, Debian, or Centos. Você pode encontrar os seguintes arquivos do Docker no repositório GitHub, azurestack-PowerShell.You can find the following Docker files in the GitHub repository, azurestack-powershell. Consulte o repositório GitHub para obter as alterações mais recentes nos arquivos do Docker.Refer to the GitHub repository for the latest changes to the Docker files. Cada sistema operacional é marcado.Each OS is tagged. Substitua a marca, a seção após os dois-pontos, com a marca para o sistema operacional desejado.Replace the tag, the section after the colon, with the tag for the desired OS.

    LinuxLinux Imagem do DockerDocker image
    UbuntuUbuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    DebianDebian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
    CentosCentos docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  2. O Shell está pronto para seus cmdlets.The shell is ready for your cmdlets. Teste a conectividade do Shell entrando e executando Test-AzureStack.ps1 .Test your shell connectivity by signing in and then running Test-AzureStack.ps1.

    Primeiro, crie suas credenciais de entidade de serviço.First, create your service principal credentials. Você precisará do segredo e da ID do aplicativo.You will need the secret and application ID. Você também precisará da ID de objeto ao executar o Test-AzureStack.ps1 para verificar seu contêiner.You will also need the object ID when running the Test-AzureStack.ps1 to check your container. Talvez seja necessário solicitar uma entidade de serviço do seu operador de nuvem.You may need to request a service principal from your cloud operator.

    Digite os seguintes cmdlets para criar um objeto de entidade de serviço:Type the following cmdlets to create a service principle object:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Conecte-se ao seu ambiente executando o script a seguir com os seguintes valores de sua instância de Hub de Azure Stack.Connect to your environment by running the following script with the following values from your Azure Stack Hub instance.

    ValorValue DescriçãoDescription
    O nome do ambiente.The name of the environment. O nome do seu ambiente de Hub de Azure Stack.The name of your Azure Stack Hub environment.
    Ponto de extremidade do Resource ManagerResource Manager Endpoint A URL para o Gerenciador de recursos.The URL for the Resource Manager. Entre em contato com seu operador de nuvem se você não souber.Contact your cloud operator if you don't know it. Será semelhante a https://management.region.domain.com.It will look something like https://management.region.domain.com.
    ID do locatário do diretórioDirectory Tenant ID A ID do seu diretório de locatário do hub de Azure Stack.The ID of your Azure Stack Hub tenant directory.
    CredencialCredential Um objeto que contém a entidade de serviço.An object containing your service principal. Nesse caso $pscredential .In this case $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    O PowerShell retorna seu objeto de conta.PowerShell returns your account object.

  4. Teste seu ambiente executando o Test-AzureStack.ps1 script no contêiner.Test your environment by running the Test-AzureStack.ps1 script in the container. Especifique a ID de objeto da entidade de serviço.Specify the service principal object ID. Se você não indicar a ID do objeto, o script ainda será executado, mas só testará os módulos do locatário (usuário) e falhará em módulos que exigem privilégios de administrador.If you do not indicate the object ID, the script will still run but it will just test tenant (user) modules and fail on modules that require administrator privileges.

    ./Test-AzureStack.ps1 <Object ID>
    

Próximas etapasNext steps