Usare Docker per eseguire PowerShell per l'hub di Azure Stack

In questo articolo è possibile usare Docker per creare un contenitore in cui eseguire la versione di PowerShell necessaria per l'uso delle varie interfacce. È possibile trovare istruzioni per l'uso di moduli AzureRM e dei moduli Az più recenti. AzureRM richiede un contenitore basato su Windows. Az usa un contenitore basato su Linux.

Prerequisiti di Docker

Installare Docker

  1. Installare Docker.

  2. In un programma da riga di comando, ad esempio PowerShell o Bash, immettere:

    docker --version
    

Configurare un'entità servizio per l'uso di PowerShell

Per usare PowerShell per accedere alle risorse nell'hub di Azure Stack, è necessaria un'entità servizio nel tenant Microsoft Entra. Si delegano le autorizzazioni con il controllo degli accessi in base al ruolo utente. Potrebbe essere necessario richiedere l'entità servizio dall'operatore cloud.

  1. Per configurare l'entità servizio, seguire le istruzioni riportate in Concedere alle applicazioni l'accesso alle risorse dell'hub di Azure Stack creando entità servizio.

  2. Si noti l'ID applicazione, il segreto, l'ID tenant e l'ID oggetto per un uso successivo.

Eseguire PowerShell in Docker

In queste istruzioni si eseguirà un'immagine contenitore basata su Linux che contiene PowerShell e i moduli necessari per l'hub di Azure Stack.

  1. È necessario eseguire Docker usando il contenitore Linux. Quando si esegue Docker, passare ai contenitori Linux.

  2. Eseguire Docker da un computer aggiunto allo stesso dominio dell'hub di Azure Stack. Se si usa Azure Stack Development Kit (ASDK), è necessario installare la VPN nel computer remoto.

Installare il modulo Az dell'hub di Azure Stack in un contenitore Linux

  1. Dalla riga di comando eseguire il comando Docker seguente per eseguire PowerShell in un contenitore Ubuntu:

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

    È possibile eseguire Ubuntu, Debian o Centos. È possibile trovare i file Docker seguenti nel repository GitHub, azurestack-powershell. Fare riferimento al repository GitHub per le modifiche più recenti ai file Docker. Ogni sistema operativo è contrassegnato. Sostituire il tag, la sezione dopo i due punti, con il tag per il sistema operativo desiderato.

    Linux Immagine Docker
    Ubuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    Debian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
    Centos docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  2. La shell è pronta per i cmdlet. Testare la connettività della shell eseguendo l'accesso e quindi eseguendo Test-AzureStack.ps1.

    Creare prima di tutto le credenziali dell'entità servizio. Sarà necessario l'ID segreto e dell'applicazione. È necessario anche l'ID oggetto durante l'esecuzione Test-AzureStack.ps1 per controllare il contenitore. Potrebbe essere necessario richiedere un'entità servizio dall'operatore cloud.

    Digitare i cmdlet seguenti per creare un oggetto principio di servizio:

    $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 di Azure Stack.

    Value Descrizione
    Il nome dell'ambiente. Nome dell'ambiente dell'hub di Azure Stack.
    Endpoint Resource Manager URL per la Resource Manager. Contattare l'operatore cloud se non lo si conosce. Sarà simile a https://management.region.domain.com.
    Directory Tenant ID ID della directory tenant dell'hub di Azure Stack.
    Credenziale Oggetto contenente l'entità servizio. In questo caso $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell restituisce l'oggetto account.

  4. Testare l'ambiente eseguendo lo Test-AzureStack.ps1 script nel contenitore. Specificare l'ID oggetto dell'entità servizio. Se non si indica l'ID oggetto, lo script verrà comunque eseguito, ma testerà i moduli tenant (utente) e avrà esito negativo nei moduli che richiedono privilegi di amministratore.

    ./Test-AzureStack.ps1 <Object ID>
    

Passaggi successivi