Använda Docker för att köra PowerShell för Azure Stack Hub

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

I den här artikeln kan du använda Docker för att skapa en container där du kan köra den version av PowerShell som krävs för att arbeta med de olika gränssnitten. Du hittar instruktioner för att använda både AzureRM-moduler och de senaste Az-modulerna. AzureRM kräver en Windows-baserad container. Az använder en Linux-baserad container.

Docker-krav

Installera Docker

  1. Installera Docker.

  2. I ett kommandoradsprogram, till exempel PowerShell eller Bash, anger du:

    docker --version
    

Konfigurera ett huvudnamn för tjänsten för att använda PowerShell

Om du vill använda PowerShell för att komma åt resurser i Azure Stack Hub behöver du ett huvudnamn för tjänsten i din Microsoft Entra klientorganisation. Du delegerar behörigheter med användarrollbaserad åtkomstkontroll (RBAC). Du kan behöva begära tjänstens huvudnamn från molnoperatören.

  1. Om du vill konfigurera tjänstens huvudnamn följer du anvisningarna i Ge program åtkomst till Azure Stack Hub-resurser genom att skapa tjänstens huvudnamn.

  2. Observera program-ID, hemligheten, ditt klient-ID och objekt-ID för senare användning.

Kör PowerShell i Docker

I de här anvisningarna kör du en Linux-baserad containeravbildning som innehåller PowerShell och de moduler som krävs för Azure Stack Hub.

  1. Du måste köra Docker med hjälp av Linux-containern. När du kör Docker växlar du till Linux-containrar.

  2. Kör Docker från en dator som är ansluten till samma domän som Azure Stack Hub. Om du använder Azure Stack Development Kit (ASDK) måste du installera VPN på fjärrdatorn.

Installera Azure Stack Hub Az-modulen på en Linux-container

  1. Kör följande Docker-kommando från kommandoraden för att köra PowerShell i en Ubuntu-container:

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

    Du kan köra Ubuntu, Debian eller Centos. Du hittar följande Docker-filer på GitHub-lagringsplatsen azurestack-powershell. Se GitHub-lagringsplatsen för de senaste ändringarna av Docker-filerna. Varje operativsystem är taggat. Ersätt taggen, avsnittet efter kolonet, med taggen för önskat operativsystem.

    Linux Docker-avbildning
    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. Gränssnittet är redo för dina cmdletar. Testa shell-anslutningen genom att logga in och sedan köra Test-AzureStack.ps1.

    Skapa först autentiseringsuppgifterna för tjänstens huvudnamn. Du behöver hemligheten och program-ID:t. Du behöver också objekt-ID :t när du Test-AzureStack.ps1 kör för att kontrollera containern. Du kan behöva begära ett huvudnamn för tjänsten från molnoperatören.

    Skriv följande cmdletar för att skapa ett tjänstprincipobjekt:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Anslut till din miljö genom att köra följande skript med följande värden från din Azure Stack Hub-instans.

    Värde Beskrivning
    Namnet på miljön. Namnet på din Azure Stack Hub-miljö.
    Resource Manager slutpunkt URL:en för Resource Manager. Kontakta molnoperatören om du inte vet det. Den ser ut ungefär så här: https://management.region.domain.com.
    Katalogklientorganisations-ID ID:t för din Azure Stack Hub-klientkatalog.
    Merit Ett objekt som innehåller tjänstens huvudnamn. I det här fallet $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell returnerar ditt kontoobjekt.

  4. Testa din miljö genom att köra skriptet Test-AzureStack.ps1 i containern. Ange objekt-ID för tjänstens huvudnamn. Om du inte anger objekt-ID:t körs skriptet fortfarande, men det testar bara klientmoduler (användare) och misslyckas med moduler som kräver administratörsbehörighet.

    ./Test-AzureStack.ps1 <Object ID>
    

Nästa steg