Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure CLI можно установить для управления Azure Stack Hub с помощью компьютеров Windows или Linux. В этой статье описаны действия по установке и настройке Azure CLI.
Установите Azure CLI
Войдите на рабочую станцию разработки и установите CLI. Для Azure Stack Hub требуется версия 2.0 или более поздняя версия Azure CLI.
Это важно
Из-за уязвимости, затрагивающей версии Azure CLI до версии 2.40.0, больше не рекомендуется использовать Azure CLI 2.29.2 для AD FS в Azure Stack Hub. Вы можете обновить Azure CLI 2.40.0 или более поздней версии. Однако клиенты AD FS могут столкнуться с проблемами с командами Azure CLI, взаимодействующими с конечными точками Microsoft Graph. Это связано с тем, что Microsoft Graph не поддерживается для AD FS. Сведения об обходных решениях проблем Microsoft Graph см. в разделе "Общие известные проблемы ".
Вы можете установить интерфейс командной строки, выполнив действия, описанные в статье "Установка Azure CLI ".
Чтобы проверить успешность установки, откройте окно терминала или командной строки и выполните следующую команду:
az --versionВы увидите версию Azure CLI и другие зависимые библиотеки, установленные на компьютере.
Запишите расположение Python в интерфейсе командной строки.
Добавление сертификата
Экспортируйте и импортируйте сертификат Azure Stack Hub для отключенных интегрированных систем. Для подключенных интегрированных систем сертификат публично подписан, и этот шаг не нужен.
Подключение к Azure CLI
- Идентификатор Microsoft Entra в Windows
- AD FS в Windows
- Идентификатор Microsoft Entra в Linux
- AD FS Linux
В этом разделе описывается настройка интерфейса командной строки, если вы используете идентификатор Microsoft Entra в качестве службы управления удостоверениями и используете ИНТЕРФЕЙС командной строки на компьютере Windows.
Подключение к Azure Stack Hub
Зарегистрируйте среду Azure Stack Hub, выполнив
az cloud registerкоманду.Зарегистрируйте среду. Используйте следующие параметры для запуска
az cloud register.Ценность Пример Описание Имя среды AzureStackUser Используйте AzureStackUserдля пользовательской среды. Если вы оператор, укажитеAzureStackAdmin.Конечная точка Resource Manager https://management.contoso.onmicrosoft.comResourceManagerUrl в интегрированных системах: https://management.<region>.<fqdn>/Если у вас есть вопрос об интегрированной конечной точке системы, обратитесь к оператору облака.конечную точку службы хранилища; local.contoso.onmicrosoft.com Для интегрированной системы используйте конечную точку для вашей системы. Суффикс Keyvault .vault.contoso.onmicrosoft.com Для интегрированной системы используйте конечную точку для вашей системы. Идентификатор ресурса Graph для конечной точки Active Directory https://graph.microsoft.com/Идентификатор ресурса Active Directory. 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>Укажите в конфигурации среды версию API, специально предназначенную для Azure Stack Hub. Чтобы изменить эту конфигурацию, выполните следующую команду:
az cloud update --profile 2020-09-01-hybridВойдите в среду Azure Stack Hub с помощью
az loginкоманды.Вы можете войти в среду Azure Stack Hub с помощью учетных данных пользователя или предоставленного вам оператором облака диспетчера службы.
- Войдите как пользователь:
Вы можете указать имя пользователя и пароль непосредственно в команде
az loginили выполнить аутентификацию в браузере. Необходимо пройти проверку подлинности с помощью браузера, если у учетной записи включена многофакторная проверка подлинности:az login -u "[email protected]" -p 'Password123!' --tenant contoso.onmicrosoft.comЗамечание
Если у учетной записи пользователя включена многофакторная проверка подлинности, используйте
az loginкоманду без предоставления-uпараметра. Выполнение этой команды предоставляет URL-адрес и код, который необходимо использовать для проверки подлинности.Войдите в качестве сервисного принципала:
Перед входом создайте сервисный принципал в портале Azure или через 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Вы должны увидеть, что ваша среда указана в списке и активна
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
Проверка подключения
После настройки используйте интерфейс командной строки для создания ресурсов в Azure Stack Hub. Например, можно создать группу ресурсов для приложения и добавить виртуальную машину. Используйте следующую команду, чтобы создать группу ресурсов с именем 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
}
Общие известные проблемы
Общее исправление большинства проблем — использовать az rest команду, использующую текущий контекст Azure Stack, чтобы вызвать REST API для связанной команды с проблемой. Обходные пути в следующем списке проблем, как правило, можно адаптировать для других проблем Azure CLI, если эти проблемы вызваны Azure CLI, а не поставщиками ресурсов Azure Stack Hub или другими службами Azure Stack Hub.
Проблемы с Microsoft Graph
Это известные проблемы Microsoft Graph для Azure CLI 2.40.0 или более поздней версии для Azure Stack Hub. Это в первую очередь влияет на среды AD FS, так как они не поддерживают Microsoft Graph.
az keyvault createвзаимодействует с Microsoft Graph. Ниже приведен пример обходного решения для AD FS. В первую очередь обходное решение использует Azure AD Graph для получения сведений о пользователе, таких какobjectId, а не Microsoft Graph.# 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Дополнительные сведения о REST API Key Vault см. в справочнике по REST API Key Vault.
Другие проблемы
Ниже приведены проблемы, не связанные с определенными версиями или диапазонами версий Azure CLI.
az role assignment createв настоящее время не поддерживается Azure CLI для Azure Stack Hub из-за старой проблемы с API. Для 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 назначения ролей см. в статье о назначениях ролей.