使用 Docker 執行 Azure Stack Hub 的 PowerShell

警告

本文參考 CentOS,這是接近生命周期結束 (EOL) 狀態的 Linux 散發套件。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

在本文中,您可以使用 Docker 來建立容器,以在其上執行使用各種介面時所需的 PowerShell 版本。 您可以找到使用 AzureRM 模組和最新 Az 模組的指示。 AzureRM 需要以 Windows 為基礎的容器。 Az 使用以 Linux 為基礎的容器。

Docker 必要條件

安裝 Docker

  1. 安裝 Docker

  2. 在 PowerShell 或 Bash 等命令列程式中輸入:

    docker --version
    

設定服務主體來使用 PowerShell

若要使用 PowerShell 存取 Azure Stack Hub 中的資源,您需要 Microsoft Entra 租使用者中的服務主體。 您可以透過使用者的角色型存取控制 (RBAC) 來委派權限。 您可能需要向雲端操作員要求服務主體。

  1. 若要設定您的服務主體,請遵循藉由建立服務主體使應用程式可存取 Azure Stack Hub 資源中的指示。

  2. 請記下應用程式識別碼、祕密、您的租用戶識別碼和物件識別碼,以供稍後使用。

在 Docker 中執行 PowerShell

在這些指示中,您將執行以 Linux 為基礎的容器映像,其中包含 PowerShell 和 Azure Stack Hub 所需的模組。

  1. 您需要使用 Linux 容器來執行 Docker。 當您執行 Docker 時,請切換至 Linux 容器。

  2. 執行 Docker 的機器必須加入 Azure Stack Hub 所在的相同網域。 如果您使用 Azure Stack 開發套件 (ASDK),您必須先在遠端電腦上安裝 VPN

在 Linux 容器上安裝 Azure Stack Hub Az 模組

  1. 從命令列執行下列 Docker 命令,以在 Ubuntu 容器中執行 PowerShell:

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

    您可以執行 Ubuntu、Debian 或 Centos。 您可以在 GitHub 存放庫 (azurestack-powershell) 中找到下列 Docker 檔案。 請參閱 GitHub 存放庫,以取得 Docker 檔案的最新變更。 每個 OS 都會加上標記。 以所需 OS 的標記取代標記 (冒號之後的區段)。

    Linux 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. 殼層已可供您的 Cmdlet 使用。 登入並執行 Test-AzureStack.ps1 以測試您的 shell 連線能力。

    首先,建立您的服務主體認證。 您將需要秘密應用程式識別碼。 當您執行 Test-AzureStack.ps1 來檢查容器時,也需要物件識別碼。 您可能需要向雲端操作員要求服務主體。

    輸入下列 Cmdlet 來建立服務主體物件:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. 搭配使用下列 Azure Stack Hub 執行個體中的值,執行下列指令碼來連線至環境。

    描述
    環境的名稱。 Azure Stack Hub 環境的名稱。
    Resource Manager 端點 Resource Manager 的 URL。 如果您不知道,請洽詢您的雲端操作員。 輸出應該會類似於 https://management.region.domain.com
    目錄租用戶識別碼 Azure Stack Hub 租用戶目錄的識別碼。
    認證 物件,其中包含您的服務主體。 在此案例中:$pscredential
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell 會傳回您的帳戶物件。

  4. 藉由在容器中執行 Test-AzureStack.ps1 指令碼來測試環境。 指定服務主體物件識別碼。 如果您沒有指出物件識別碼,指令碼仍會執行,但其僅會測試租用戶 (使用者) 模組,且會在需要系統管理員權限的模組上失敗。

    ./Test-AzureStack.ps1 <Object ID>
    

後續步驟