Azure CLI をインストールして、Windows または Linux マシンで Azure Stack Hub を管理できます。 この記事では、Azure CLI をインストールして設定する手順について説明します。
Azure CLI のインストール
開発ワークステーションにサインインし、CLI をインストールします。 Azure Stack Hub には、バージョン 2.0 以降の Azure CLI が必要です。
Von Bedeutung
CVE が 2.40.0 より前のバージョンの Azure CLI に影響するため、Azure Stack Hub で AZURE CLI 2.29.2 for AD FS を使用することは推奨されなくなりました。 Azure CLI 2.40.0 以降に更新できます。 ただし、AD FS のお客様は、Microsoft Graph エンドポイントと対話する Azure CLI コマンドで問題が発生する可能性があります。 これは、Microsoft Graph が AD FS でサポートされていないためです。 Microsoft Graph の問題の回避策については、「 一般的な既知の問題 」セクションを参照してください。
AZURE CLI のインストールに関する記事で説明されている手順を使用して 、CLI をインストール できます。
インストールが成功したかどうかを確認するには、ターミナルまたはコマンド プロンプト ウィンドウを開き、次のコマンドを実行します。
az --version
Azure CLI のバージョンと、コンピューターにインストールされているその他の依存ライブラリが表示されます。
CLI の Python の場所を書き留めておきます。
証明書の追加
切断された統合システムの Azure Stack Hub 証明書をエクスポートしてインポートします。 接続されている統合システムの場合は、証明書はパブリック的に署名されており、この手順は必要ありません。
Azure CLI を使用して接続する
このセクションでは、ID 管理サービスとして Microsoft Entra ID を使用していて、Windows マシンで CLI を使用している場合に CLI を設定する手順について説明します。
Azure Stack Hub に接続する
az cloud register
コマンドを実行して、Azure Stack Hub 環境を登録します。お客様の環境を登録します。
az cloud register
を実行するときは、次のパラメーターを使用します。価値 例 説明 環境名 AzureStackUser ユーザー環境に AzureStackUser
を使用します。 演算子の場合は、AzureStackAdmin
を指定します。Resource Manager エンドポイント https://management.contoso.onmicrosoft.com
統合システムの ResourceManagerUrl は、 https://management.<region>.<fqdn>/
です。 統合システム エンドポイントについてご質問がある場合は、クラウド オペレーターにお問い合わせください。ストレージ エンドポイント local.contoso.onmicrosoft.com 統合システムの場合は、システムのエンドポイントを使用します。 Keyvault サフィックス .vault.contoso.onmicrosoft.com 統合システムの場合は、システムのエンドポイントを使用します。 エンドポイントの Active Directory グラフ リソース ID https://graph.microsoft.com/
Active Directory リソース ID。 az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
詳細については、Azure CLI リファレンス ドキュメントの register コマンド を参照してください。
次のコマンドを使用して、アクティブな環境を設定します。
az cloud set -n <environmentname>
Azure Stack Hub 固有の API バージョンのプロファイルを使用するようにお使いの環境の構成を更新します。 構成を更新するには、次のコマンドを実行します。
az cloud update --profile 2020-09-01-hybrid
az login
コマンドを使用して、Azure Stack Hub 環境にサインインします。ユーザーの資格情報を使用するか、クラウド オペレーターから提供された サービス プリンシパル (SPN) を使用して、Azure Stack Hub 環境にサインインできます。
- ユーザーとしてサインインします。
az login
コマンド内で直接ユーザー名とパスワードを指定するか、ブラウザーを使用して認証できます。 アカウントで多要素認証が有効になっている場合は、ブラウザーを使用して認証する必要があります。az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
注
ユーザー アカウントで多要素認証が有効になっている場合は、
az login
パラメーターを指定せずに-u
コマンドを使用します。 このコマンドを実行すると、認証に使用する必要がある URL とコードが提供されます。サービス プリンシパルとしてサインインします。
サインインする前に、Azure portal または CLI を 使用してサービス プリンシパルを作成 し、ロールを割り当てます。 次に、次のコマンドを使用してサインインします。
az login ` --tenant <Azure Active Directory Tenant name. ` For example: myazurestack.onmicrosoft.com> ` --service-principal ` -u <Application Id of the Service Principal> ` -p <Key generated for the Service Principal>
環境が正しく設定されていること、および環境がアクティブなクラウドであることを確認します。
az cloud list --output table
環境が一覧表示され、 IsActive が
true
されていることがわかります。 例えば次が挙げられます。IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
接続をテストする
すべてが設定された状態で、CLI を使用して Azure Stack Hub 内にリソースを作成します。 たとえば、アプリのリソース グループを作成し、VM を追加できます。 次のコマンドを使用して、"MyResourceGroup" という名前のリソース グループを作成します。
az group create -n MyResourceGroup -l local
リソース グループが正常に作成されると、前のコマンドによって、新しく作成されたリソースの次のプロパティが出力されます。
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"___location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
一般的な既知の問題
ほとんどの問題の一般的な修正は、現在の Azure Stack コンテキストを使用する az rest
コマンドを使用して、問題に関連付けられているコマンドの REST API 呼び出しを行う方法です。 次の問題の一覧の回避策は、通常、Azure Stack Hub リソース プロバイダーやその他の Azure Stack Hub サービスではなく、Azure CLI によってこれらの問題が発生している限り、他の Azure CLI の問題に適応できます。
Microsoft Graph の問題
これらは、Azure Stack Hub の Azure CLI 2.40.0 以降に関する既知の Microsoft Graph の問題です。 これは主に、Microsoft Graph をサポートしていないため、AD FS 環境に影響します。
az keyvault create
は Microsoft Graph と対話します。 AD FS の回避策の例を次に示します。 主に、この回避策では、Azure AD Graph を使用して、Microsoft Graph ではなくobjectId
などのユーザー情報を取得します。# First, sign into Azure CLI account you want to create the Key Vault from. # TODO: change the principal name to name of principal you want to create the key vault with. $principalNameLike = "CloudUser*" # TODO: change ___location to your preference. $___location = "local" $aadGraph = az cloud show --query endpoints.activeDirectoryGraphResourceId --output tsv $tenantId = az account show --query tenantId --output tsv if ($aadGraph[-1] -ne '/') { $aadGraph += '/' } $userObject = az rest --method get --url "${aadGraph}${tenantId}/users?api-version=1.6" ` | ConvertFrom-Json ` | Select-Object -ExpandProperty value ` | Where-Object {$_.userPrincipalName -like $principalNameLike} $body = '{ "___location": "' + $___location + '", "properties": { "tenantId": "' + $tenantId + '", "sku": { "family": "A", "name": "standard" }, "accessPolicies": [ { "tenantId": "' + $tenantId + '", "objectId": "' + $userObject.objectId + '", "permissions": { "keys": [ "get", "create", "delete", "list", "update", "import", "backup", "restore", "recover" ], "secrets": [ "get", "list", "set", "delete", "backup", "restore", "recover" ], "certificates": [ "get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover" ], "storage": [ "get", "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas" ] } } ], "enabledForDeployment": true, "enabledForTemplateDeployment": true } }' $body | Out-File -FilePath (Join-Path -Path "." -ChildPath "body.json") $resourceGroupName = "testrg123" az group create -n $resourceGroupName -l $___location $armEndpoint = az cloud show --query endpoints.resourceManager --output tsv if ($armEndpoint[-1] -ne '/') { $armEndpoint += '/' } $subscriptionId = az account show --query id --output tsv $keyVaultName = "testkv123" az rest --method put --url "${armEndpoint}subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.KeyVault/vaults/${keyVaultName}?api-version=2016-10-01" --body `@body.json # OPTIONAL: test access to the Key Vault. # az keyvault secret set --name MySecretName --vault-name $keyVaultName --value MySecret
Key Vault REST API の詳細については、 Key Vault REST API リファレンスを参照してください。
その他の問題
Azure CLI の特定のバージョンまたはバージョンの範囲に限定されない問題を次に示します。
az role assignment create
は、古い API の問題のため、Azure CLI for Azure Stack Hub では現在サポートされていません。 Microsoft Entra ID と AD FS の両方に対して、次の回避策が必要です。# First, sign into account with access to the resource that is being given access or a role to another user. # TODO: change the principal name to name of principal you want to assign the role to. $principalNameLike = "CloudUser*" # TODO: change role name to your preference. $roleName = "Owner" # TODO: change ___location to your preference. $___location = "local" $aadGraph = az cloud show --query endpoints.activeDirectoryGraphResourceId --output tsv $tenantId = az account show --query tenantId --output tsv if ($aadGraph[-1] -ne '/') { $aadGraph += '/' } $userObject = az rest --method get --url "${aadGraph}${tenantId}/users?api-version=1.6" ` | ConvertFrom-Json ` | Select-Object -ExpandProperty value ` | Where-Object {$_.userPrincipalName -like $principalNameLike} $roleDefinitionId = az role definition list --query "[?roleName=='${roleName}'].id" --output tsv $body = @{ properties = @{ roleDefinitionId = $roleDefinitionId principalId = $userObject.objectId } } $body | ConvertTo-Json | Out-File -FilePath (Join-Path -Path "." -ChildPath "body.json") $resourceGroupName = "testrg123" az group create -n $resourceGroupName -l $___location $armEndpoint = az cloud show --query endpoints.resourceManager --output tsv if ($armEndpoint[-1] -ne '/') { $armEndpoint += '/' } $scope = az group show --name $resourceGroupName --query id --output tsv $guid = (New-Guid).ToString() az rest --method put --url "${armEndpoint}${scope}/providers/Microsoft.Authorization/roleAssignments/${guid}?api-version=2015-07-01" --body `@body.json # OPTIONAL: test access to the resource group, or use the portal. # az login -u <assigned user name> -p <assigned user password> --tenant $tenantId # Test a resource creation command in the resource group: # az network dns zone create -g $resourceGroupName -n "www.mysite.com"
ロールの割り当て REST API の詳細については、 ロールの割り当ての記事を参照してください。