Docker を使用して Azure Stack Hub に対して PowerShell を実行する
この記事では、Docker を使用してコンテナーを作成します。そのコンテナー上で、さまざまなインターフェイスの操作に必要な PowerShell のバージョンを実行できます。 AzureRM モジュールと最新の Az モジュールの両方を使用する手順がわかります。 AzureRM を使用するには、Windows ベースのコンテナーが必要です。 Az では、Linux ベースのコンテナーが使用されます。
Docker の前提条件
Docker をインストールする
Docker をインストールします。
PowerShell や Bash などのコマンドライン ツールで、次を入力します。
docker --version
PowerShell を使用してサービス プリンシパルを設定する
PowerShell を使用して Azure Stack Hub のリソースにアクセスするには、Microsoft Entra テナントにサービス プリンシパルが必要です。 ユーザーのロールベースのアクセス制御 (RBAC) を使用してアクセス許可を委任します。 クラウド オペレーターにサービス プリンシパルを要求することが必要になる場合があります。
サービス プリンシパルを設定するには、サービス プリンシパルを作成することによるアプリケーションへの Azure Stack Hub リソースに対するアクセスの付与に関するページの手順に従います。
後で使用するので、アプリケーション ID、シークレット、テナント ID、オブジェクト ID を記録しておきます。
Docker で PowerShell を実行する
以下の手順では、PowerShell と、Azure Stack Hub に必要なモジュールが含まれる Linux ベースのコンテナー イメージを実行します。
Docker は、Linux コンテナーを使用して実行する必要があります。 Docker を実行するときは、Linux コンテナーに切り替えます。
Azure Stack Hub と同じドメインに参加しているマシンから Docker を実行します。 Azure Stack Development Kit (ASDK) を使用している場合は、リモート コンピューターに VPN をインストールします。
Linux コンテナーに Azure Stack Hub Az モジュールをインストールする
コマンド ラインから、次の Docker コマンドを実行して、Ubuntu コンテナーで PowerShell を実行します。
docker run -it mcr.microsoft.com/azurestack/powershell
Ubuntu または Debian を実行できます。 次の Docker ファイルは、GitHub リポジトリ azurestack-powershell で見つけることができます。 Docker ファイルに対する最新の変更については、GitHub リポジトリを参照してください。 各 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
コマンドレットに対するシェルの準備が整いました。 サインインして
Test-AzureStack.ps1
を実行し、シェルの接続をテストします。最初に、サービス プリンシパルの資格情報を作成します。 シークレットとアプリケーション ID が必要になります。 また、
Test-AzureStack.ps1
を実行してコンテナーを確認するときは、オブジェクト ID も必要になります。 クラウド オペレーターにサービス プリンシパルを要求することが必要になる場合があります。次のコマンドレットを入力して、サービス プリンシパル オブジェクトを作成します。
$passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
Azure Stack Hub インスタンスから、次の値を使用して次のスクリプトを実行し、環境に接続します。
値 説明 環境の名前。 Azure Stack Hub 環境の名前。 Resource Manager エンドポイント Resource Manager の URL。 不明な場合は、クラウド オペレーターに問い合わせてください。 これは、 https://management.region.domain.com
のように表示されます。ディレクトリ テナント ID Azure Stack Hub テナント ディレクトリの ID。 資格情報 サービス プリンシパルが含まれるオブジェクト。 この場合は、 $pscredential
です。./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
PowerShell からアカウント オブジェクトが返されます。
コンテナーで
Test-AzureStack.ps1
スクリプトを実行して、環境をテストします。 サービス プリンシパルのオブジェクト ID を指定します。 オブジェクト ID を指定しなくても、スクリプトは実行されますが、テナント (ユーザー) モジュールだけがテストされ、管理者特権を必要とするモジュールでは失敗します。./Test-AzureStack.ps1 <Object ID>
次のステップ
- Azure Stack Hub の Azure Stack Hub PowerShell の概要をお読みください。
- Azure Stack Hub の PowerShell の API プロファイルについてお読みください。
- Azure Stack Hub PowerShell をインストールします。
- クラウドの一貫性のための Azure Resource Manager テンプレートの作成についてお読みください。