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

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux che si avvicina allo stato end of life (EOL). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

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 dei 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. È possibile delegare le autorizzazioni con il controllo degli accessi in base al ruolo dell'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. Prendere nota dell'ID applicazione, del segreto, dell'ID tenant e dell'ID oggetto per un uso successivo.

Eseguire PowerShell in Docker

In queste istruzioni si eseguirà un'immagine del 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 apportate 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. Saranno necessari il segreto e l'ID applicazione. Sarà necessario anche l'ID oggetto durante l'esecuzione di 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 entità 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 dell'istanza dell'hub di Azure Stack.

    Valore Descrizione
    Il nome dell'ambiente. Nome dell'ambiente dell'hub di Azure Stack.
    Endpoint Resource Manager URL del Resource Manager. Se non lo si conosce, contattare l'operatore cloud. Sarà simile a https://management.region.domain.com.
    Directory Tenant ID ID della directory del 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à solo i moduli tenant (utente) e avrà esito negativo nei moduli che richiedono privilegi di amministratore.

    ./Test-AzureStack.ps1 <Object ID>
    

Passaggi successivi