Instalace Azure CLI ve službě Azure Stack Hub
Azure CLI můžete nainstalovat pro správu služby Azure Stack Hub na počítačích s Windows nebo Linuxem. Tento článek vás provede postupem instalace a nastavení Azure CLI.
Instalace rozhraní příkazového řádku Azure CLI
Přihlaste se k pracovní stanici pro vývoj a nainstalujte rozhraní příkazového řádku. Azure Stack Hub vyžaduje Azure CLI verze 2.0 nebo novější.
Důležité
Kvůli cve , který ovlivňuje azure CLI verze starší než 2.40.0, se už nedoporučuje používat Azure CLI 2.29.2 pro službu AD FS ve službě Azure Stack Hub. Můžete provést aktualizaci na Azure CLI 2.40.0 nebo novější. Zákazníci služby AD FS ale můžou narazit na problémy s příkazy Azure CLI, které komunikují s koncovými body Microsoft Graphu. Důvodem je to, že Služba AD FS nepodporuje Microsoft Graph. Alternativní řešení problémů s Microsoft Graphem najdete v části Obecné známé problémy .
Rozhraní příkazového řádku můžete nainstalovat pomocí postupu popsaného v článku Instalace Azure CLI .
Pokud chcete ověřit, jestli instalace proběhla úspěšně, otevřete okno terminálu nebo příkazového řádku a spusťte následující příkaz:
az --version
Měla by se zobrazit verze Azure CLI a dalších závislých knihoven, které jsou nainstalované na vašem počítači.
Poznamenejte si umístění Pythonu rozhraní příkazového řádku.
Přidání certifikátu
Exportujte a pak importujte certifikát služby Azure Stack Hub pro odpojené integrované systémy a sadu ASDK. U připojených integrovaných systémů je certifikát veřejně podepsaný a tento krok není nutný. Pokyny najdete v tématu Nastavení certifikátů pro Azure CLI ve sadě Azure Stack Development Kit.
Připojení pomocí Azure CLI
Tato část vás provede nastavením rozhraní příkazového řádku, pokud používáte Microsoft Entra ID jako službu správy identit a používáte rozhraní příkazového řádku na počítači s Windows.
Připojení ke službě Azure Stack Hub
Pokud používáte ASDK, důvěřujte kořenovému certifikátu certifikační autority služby Azure Stack Hub. Pokyny najdete v tématu Důvěryhodnost certifikátu.
Spuštěním
az cloud register
příkazu zaregistrujte prostředí služby Azure Stack Hub.Zaregistrujte své prostředí. Při spuštění
az cloud register
příkazu použijte následující parametry:Hodnota Příklad Description Název prostředí AzureStackUser Použijte AzureStackUser
pro uživatelské prostředí. Pokud jste operátor, zadejteAzureStackAdmin
.koncový bod Resource Manager https://management.contoso.onmicrosoft.com
ResourceManagerUrl v ASDK je: https://management.local.azurestack.external/
ResourceManagerUrl v integrovaných systémech je:https://management.<region>.<fqdn>/
Pokud máte dotaz týkající se koncového bodu integrovaného systému, obraťte se na operátora cloudu.Koncový bod úložiště local.contoso.onmicrosoft.com local.azurestack.external
je pro ASDK. V případě integrovaného systému použijte koncový bod pro váš systém.Přípona trezoru klíčů .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
je pro ASDK. V případě integrovaného systému použijte koncový bod pro váš systém.ID prostředku služby Active Directory graph koncového bodu https://graph.windows.net/ Identifikátor prostředku služby Azure Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
Referenční informace k příkazu register najdete v referenční dokumentaci k Azure CLI.
Pomocí následujících příkazů nastavte aktivní prostředí.
az cloud set -n <environmentname>
Aktualizujte konfiguraci prostředí tak, aby používalo profil verze rozhraní API specifické pro službu Azure Stack Hub. Pokud chcete aktualizovat konfiguraci, spusťte následující příkaz:
az cloud update --profile 2020-09-01-hybrid
Přihlaste se k prostředí služby Azure Stack Hub pomocí
az login
příkazu .K prostředí služby Azure Stack Hub se můžete přihlásit pomocí přihlašovacích údajů uživatele nebo pomocí instančního objektu (SPN), který vám poskytl operátor cloudu.
Přihlaste se jako uživatel:
Uživatelské jméno a heslo můžete zadat buď přímo v příkazu
az login
, nebo provést ověření pomocí prohlížeče. Pokud má váš účet povolené vícefaktorové ověřování, musíte to udělat:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Poznámka
Pokud má váš uživatelský účet povolené vícefaktorové ověřování, použijte
az login
příkaz bez zadání parametru-u
. Spuštěním tohoto příkazu získáte adresu URL a kód, které musíte použít k ověření.Přihlaste se jako instanční objekt:
Před přihlášením vytvořte instanční objekt prostřednictvím Azure Portal nebo rozhraní příkazového řádku a přiřaďte mu roli. Teď se přihlaste pomocí následujícího příkazu:
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>
Ověřte, že je vaše prostředí správně nastavené a že je to aktivní cloud.
az cloud list --output table
Měli byste vidět, že vaše prostředí je uvedené a Hodnota IsActive je
true
. Příklad:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Testování připojení
Když je všechno nastavené, můžete pomocí rozhraní příkazového řádku vytvářet prostředky ve službě Azure Stack Hub. Můžete například vytvořit skupinu prostředků pro aplikaci a přidat virtuální počítač. Pomocí následujícího příkazu vytvořte skupinu prostředků s názvem MyResourceGroup:
az group create -n MyResourceGroup -l local
Pokud se skupina prostředků úspěšně vytvoří, výstupem předchozího příkazu budou následující vlastnosti nově vytvořeného prostředku:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Obecné známé problémy
Obecnou opravou většiny problémů je použití az rest
příkazu, který používá aktuální kontext služby Azure Stack, k volání rozhraní REST API pro příkaz přidružený k problému. Alternativní řešení v následujícím seznamu problémů je obecně možné přizpůsobit pro jiné problémy Azure CLI, pokud tyto problémy nejsou způsobené Azure CLI, a ne poskytovateli prostředků Azure Stack Hub nebo jinými službami Azure Stack Hub.
Problémy s Microsoft Graphem
Toto jsou známé problémy s Microsoft Graphem pro Azure CLI 2.40.0 nebo novější pro službu Azure Stack Hub. To má vliv především na prostředí služby AD FS, protože nepodporuje Microsoft Graph.
az keyvault create
komunikuje s Microsoft Graphem. Následuje příklad alternativního řešení pro službu AD FS. Alternativní řešení primárně používá Azure AD Graph k načtení informací o uživateli, jakoobjectId
je například místo Microsoft Graphu.# 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
Další informace o rozhraní REST API Key Vault najdete v referenčních informacích k rozhraní KEY VAULT REST API.
Další problémy
Níže jsou uvedené problémy, které se neomezují pouze na konkrétní verze nebo rozsahy verzí Azure CLI.
-
az role assignment create
Azure CLI pro službu Azure Stack Hub v současné době nepodporuje kvůli starému problému s rozhraním API. Pro id Microsoft Entra i ad fs vyžaduje následující alternativní řešení.
Další informace o rozhraní REST API pro přiřazení rolí najdete v článku přiřazení rolí.# 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"