Usare Docker per eseguire PowerShell per Azure Stack HubUse Docker to run PowerShell for Azure Stack Hub

In questo articolo è possibile usare Docker per creare un contenitore in cui eseguire la versione di PowerShell necessaria per lavorare con le varie interfacce.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. È possibile trovare istruzioni per l'uso di entrambi i moduli AzureRM e dei moduli AZ più recenti.You can find instructions for using both AzureRM modules and the latest Az modules. AzureRM richiede un contenitore basato su Windows.AzureRM requires a Windows-based container. AZ usa un contenitore basato su Linux.Az uses a Linux-based container.

Prerequisiti di DockerDocker prerequisites

Installazione di DockerInstall Docker

  1. Installare Docker.Install Docker.

  2. In un programma da riga di comando, ad esempio PowerShell o bash, immettere:In a command-line program, such as PowerShell or Bash, enter:

    docker --version
    

Configurare un'entità servizio per l'uso di PowerShellSet up a service principal for using PowerShell

Per usare PowerShell per accedere alle risorse nell'hub Azure Stack, è necessaria un'entità servizio nel tenant di Azure Active Directory (Azure AD).To use PowerShell to access resources in Azure Stack Hub, you need a service principal in your Azure Active Directory (Azure AD) tenant. È possibile delegare le autorizzazioni con il controllo degli accessi in base al ruolo (RBAC).You delegate permissions with user role-based access control (RBAC). Potrebbe essere necessario richiedere l'entità servizio dall'operatore cloud.You may need to request the service principal from your cloud operator.

  1. Per configurare l'entità servizio, seguire le istruzioni riportate in concedere alle applicazioni l'accesso alle risorse dell'Hub Azure stack tramite la creazione di entità servizio.To set up your service principal, follow the instructions in Give applications access to Azure Stack Hub resources by creating service principals.

  2. Annotare l'ID applicazione, il segreto, l'ID tenant e l'ID oggetto per un uso successivo.Note the application ID, the secret, your tenant ID, and object ID for later use.

Eseguire PowerShell in DockerRun PowerShell in Docker

In queste istruzioni si eseguirà un'immagine del contenitore basata su Linux che contiene PowerShell e i moduli richiesti per 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. È necessario eseguire Docker usando il contenitore Linux.You need to run Docker by using Linux container. Quando si esegue Docker, passare a contenitori Linux.When you run Docker, switch to Linux containers.

  2. Eseguire Docker da un computer aggiunto allo stesso dominio dell'hub Azure Stack.Run Docker from a machine that's joined to the same domain as Azure Stack Hub. Se si usa il Azure Stack Development Kit (Gabriele), è necessario installare la VPN nel computer remoto.If you are using the Azure Stack Development Kit (ASDK), you need to install the VPN on your remote machine.

Installare Azure Stack Hub AZ Module in un contenitore LinuxInstall Azure Stack Hub Az module on a Linux container

  1. Dalla riga di comando eseguire il comando Docker seguente per eseguire PowerShell in un contenitore 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
    

    È possibile eseguire Ubuntu, Debian o CentOS.You can run Ubuntu, Debian, or Centos. È possibile trovare i seguenti file Docker nel repository GitHub, azurestack-PowerShell.You can find the following Docker files in the GitHub repository, azurestack-powershell. Vedere il repository GitHub per le ultime modifiche apportate ai file di Docker.Refer to the GitHub repository for the latest changes to the Docker files. Ogni sistema operativo è contrassegnato con tag.Each OS is tagged. Sostituire il tag, la sezione dopo i due punti, con il tag per il sistema operativo desiderato.Replace the tag, the section after the colon, with the tag for the desired OS.

    LinuxLinux Immagine 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. La shell è pronta per i cmdlet.The shell is ready for your cmdlets. Testare la connettività della Shell eseguendo l'accesso e quindi eseguendo Test-AzureStack.ps1 .Test your shell connectivity by signing in and then running Test-AzureStack.ps1.

    Per prima cosa, creare le credenziali dell'entità servizio.First, create your service principal credentials. Sono necessari il segreto e l' ID applicazione.You will need the secret and application ID. Sarà inoltre necessario l' ID oggetto quando si esegue Test-AzureStack.ps1 per verificare il contenitore.You will also need the object ID when running the Test-AzureStack.ps1 to check your container. Potrebbe essere necessario richiedere un'entità servizio dall'operatore cloud.You may need to request a service principal from your cloud operator.

    Digitare i cmdlet seguenti per creare un oggetto principale del servizio: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. Connettersi all'ambiente eseguendo lo script seguente con i valori seguenti dall'istanza dell'hub Azure Stack.Connect to your environment by running the following script with the following values from your Azure Stack Hub instance.

    ValoreValue DescrizioneDescription
    Il nome dell'ambiente.The name of the environment. Nome dell'ambiente dell'hub Azure Stack.The name of your Azure Stack Hub environment.
    Endpoint Gestione risorseResource Manager Endpoint URL per il Gestione risorse.The URL for the Resource Manager. Se non lo si conosce, contattare l'operatore cloud.Contact your cloud operator if you don't know it. Sarà simile a https://management.region.domain.com.It will look something like https://management.region.domain.com.
    ID tenant directoryDirectory Tenant ID ID della directory del tenant dell'hub Azure Stack.The ID of your Azure Stack Hub tenant directory.
    CredenzialeCredential Oggetto contenente l'entità servizio.An object containing your service principal. In questo caso $pscredential .In this case $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell restituisce l'oggetto account.PowerShell returns your account object.

  4. Testare l'ambiente eseguendo lo Test-AzureStack.ps1 script nel contenitore.Test your environment by running the Test-AzureStack.ps1 script in the container. Specificare l' ID oggetto dell'entità servizio.Specify the service principal object ID. Se non si indica l'ID oggetto, lo script verrà comunque eseguito, ma eseguirà solo il test dei moduli tenant (utente) e avrà esito negativo nei moduli che richiedono privilegi di amministratore.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>
    

Passaggi successiviNext steps