Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede instalar la CLI de Azure para administrar Azure Stack Hub con máquinas Windows o Linux. En este artículo se describen los pasos para instalar y configurar la CLI de Azure.
Instalación de la CLI de Azure
Inicie sesión en la estación de trabajo de desarrollo e instale la CLI. Azure Stack Hub requiere la versión 2.0 o posterior de la CLI de Azure.
Importante
Debido a un CVE que afecta a las versiones de la CLI de Azure anteriores a la versión 2.40.0, ya no se recomienda usar la CLI de Azure 2.29.2 para AD FS en Azure Stack Hub. Puede actualizar a la CLI de Azure 2.40.0 o posterior. Sin embargo, los clientes de AD FS pueden encontrar problemas con los comandos de la CLI de Azure que interactúan con los puntos de conexión de Microsoft Graph. Esto se debe a que Microsoft Graph no es compatible con AD FS. Para obtener soluciones alternativas a los problemas de Microsoft Graph, consulte la sección Problemas conocidos generales .
Puede instalar la CLI mediante los pasos descritos en el artículo Instalación de la CLI de Azure .
Para comprobar si la instalación se realizó correctamente, abra una ventana del terminal o del símbolo del sistema y ejecute el siguiente comando:
az --versionDebería ver la versión de la CLI de Azure y otras bibliotecas dependientes instaladas en el equipo.
Tome nota de la ubicación de Python de la CLI.
Agregar certificado
Exporte e importe el certificado de Azure Stack Hub para los sistemas integrados desconectados. En el caso de los sistemas integrados, el certificado está firmado públicamente y este paso no es necesario.
Conexión con la CLI de Azure
- Id. de Microsoft Entra en Windows
- AD FS en Windows
- Identificador de Entra de Microsoft en Linux
- AD FS Linux
Esta sección le guiará a través de la configuración de la CLI si usa el identificador de Microsoft Entra como servicio de administración de identidades y usa la CLI en un equipo Windows.
Conexión a Azure Stack Hub
Registre el entorno de Azure Stack Hub mediante la ejecución del
az cloud registercomando .Registre su entorno. Use los parámetros siguientes al ejecutar
az cloud register:Importancia Ejemplo Descripción Nombre del entorno AzureStackUser Use AzureStackUserpara el entorno de usuario. Si es operador, especifiqueAzureStackAdmin.Punto de conexión de Resource Manager https://management.contoso.onmicrosoft.comResourceManagerUrl en sistemas integrados es: https://management.<region>.<fqdn>/. Si tiene alguna pregunta sobre el punto de conexión del sistema integrado, póngase en contacto con el operador de nube.Punto de conexión de Storage local.contoso.onmicrosoft.com Para un sistema integrado, use un punto de conexión para el sistema. Sufijo keyvault .vault.contoso.onmicrosoft.com Para un sistema integrado, use un punto de conexión para el sistema. Id. de recurso del grafo de Active Directory de punto de conexión https://graph.microsoft.com/Identificador de recurso de Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"Para más información, consulte el comando register en la documentación de referencia de la CLI de Azure.
Establezca el entorno activo mediante los siguientes comandos.
az cloud set -n <environmentname>Actualice la configuración del entorno para usar el perfil de la versión de API específico de Azure Stack Hub. Para actualizar la configuración, ejecute el comando siguiente:
az cloud update --profile 2020-09-01-hybridInicie sesión en el entorno de Azure Stack Hub mediante el
az logincomando .Puede iniciar sesión en el entorno de Azure Stack Hub con sus credenciales de usuario o con una entidad de servicio (SPN) proporcionada por el operador en la nube.
- Inicie sesión como usuario:
puede especificar el nombre de usuario y la contraseña directamente en el comando
az logino autenticarse utilizando un explorador. Debe autenticarse mediante un explorador si la cuenta tiene habilitada la autenticación multifactor:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.comNota:
Si la cuenta de usuario tiene habilitada la autenticación multifactor, use el
az logincomando sin proporcionar el-uparámetro . Al ejecutar este comando se proporciona una dirección URL y un código que debe usar para autenticarse.Inicie sesión como entidad de servicio:
Antes de iniciar sesión, cree una entidad de servicio a través de Azure Portal o la CLI y asígnele un rol. Ahora, inicie sesión con el siguiente comando:
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>
Compruebe que el entorno está configurado correctamente y que el entorno es la nube activa:
az cloud list --output tableDebería ver que el entorno aparece y IsActive es
true. Por ejemplo:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Prueba de la conectividad
Con todo configurado, use la CLI para crear recursos en Azure Stack Hub. Por ejemplo, puede crear un grupo de recursos para una aplicación y agregar una máquina virtual. Use el siguiente comando para crear un grupo de recursos denominado "MyResourceGroup":
az group create -n MyResourceGroup -l local
Si el grupo de recursos se crea correctamente, el comando anterior genera las siguientes propiedades del recurso recién creado:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Problemas conocidos generales
La corrección general de la mayoría de los problemas consiste en usar el az rest comando que usa el contexto actual de Azure Stack para realizar una llamada a la API REST para el comando asociado con el problema. Por lo general, las soluciones alternativas de la lista de problemas siguientes se pueden adaptar a otros problemas de la CLI de Azure siempre que estos problemas se deban a la CLI de Azure y no a proveedores de recursos de Azure Stack Hub u otros servicios de Azure Stack Hub.
Problemas de Microsoft Graph
Estos son los problemas conocidos de Microsoft Graph para la CLI de Azure 2.40.0 o posterior para Azure Stack Hub. Esto afecta principalmente a los entornos de AD FS, ya que no admiten Microsoft Graph.
az keyvault createinteractúa con Microsoft Graph. A continuación se muestra una solución alternativa de ejemplo para AD FS. Principalmente, la solución alternativa usa Azure AD Graph para recuperar información de usuario como ,objectIden lugar de 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 MySecretPara más información sobre la API REST de Key Vault, consulte la referencia de la API rest de Key Vault.
Otros problemas
Los siguientes son problemas no limitados a versiones o intervalos específicos de versiones de la CLI de Azure.
az role assignment createactualmente no es compatible con la CLI de Azure para Azure Stack Hub debido a un problema de API anterior. Se requiere la siguiente solución alternativa para microsoft Entra ID o 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"Para más información sobre la API REST de asignación de roles, consulte el artículo Asignaciones de roles.