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.
En este artículo se explica cómo instalar y configurar la interfaz de Azure Command-Line (CLI) y sus extensiones para las operaciones desconectadas para Azure Local. Proporciona información general sobre la CLI, las versiones admitidas, los pasos de instalación y cómo configurar la CLI para las operaciones desconectadas.
Acerca de la CLI de Azure
La CLI es una interfaz de línea de comandos multiplataforma versátil que puede usar para crear y administrar recursos de Azure para las operaciones desconectadas locales de Azure. Para más información, consulte ¿Qué es la CLI de Azure?
Versiones admitidas para la CLI y la extensión
La versión admitida de CLI de Azure para las operaciones desconectadas de Azure Local es 2.81.0. Consulte las notas de la versión de CLI de Azure. Para comprobar la versión instalada, ejecute az version:
az version
Para más información, consulte Comandos de la CLI de Azure.
Instalación de la CLI de Azure
Para instalar la versión de 32 bits de la CLI:
- Descargue la versión 2.78.0.
- Instale la CLI localmente en equipos Linux, macOS o Windows.
Nota:
La versión admitida de CLI de Azure para las operaciones desconectadas de Azure Local es 2.81.0. En el caso de los nodos locales de Azure, instale la CLI de Azure de 32 bits para evitar errores de implementación. Use la CLI de Azure de 64 bits en máquinas cliente.
Configuración de certificados para la CLI de Azure
Para usar la CLI, debe confiar en el certificado raíz de la entidad de certificación (CA) en el equipo.
Para las operaciones desconectadas:
- Obtenga información sobre la infraestructura de clave pública (PKI) para Azure Local con operaciones desconectadas.
- Configure la confianza de certificados para la CLI de Azure mediante PowerShell.
Elija una de estas opciones de confianza de Python:
Opción 1: Use el almacén de confianza del sistema operativo (recomendado). Instale un módulo de Python que permita a Python usar el almacén de confianza del sistema operativo.
Ejecute este ejemplo de Windows en PowerShell para instalar el módulo pip-system-certs en el entorno de Python agrupado con la CLI de Azure. Reemplace las rutas de acceso de ejemplo por la ruta de acceso real del sistema.
& "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe" -m pip install pip-system-certsSi el cliente no tiene importado el certificado raíz, use este comando para importarlo.
$applianceRootCertFile = "C:\AzureLocalDisconnectedOperations\applianceRoot.cer" Import-Certificate -FilePath $applianceRootCertFile -CertStoreLocation Cert:\LocalMachine\Root -Confirm:$false
Opción 2: actualice el archivo .pem que usa la instalación de la CLI de Azure.
Este es un script de PowerShell de ejemplo:
# Define the helper method function UpdatePythonCertStore { [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [ValidateScript({Test-Path $_})] [string] $ApplianceRootCertPath = "$env:APPDATA\Appliance\applianceRoot.cer" ) Write-Verbose "[START] Updating CLI cert store with Appliance root cert at $ApplianceRootCertPath" $cerFile = $ApplianceRootCertPath Write-Verbose "Updating Python cert store with $cerFile" # C:\Program Files\Microsoft SDKs\Azure\CLI2 $azCli2Path = Split-Path -Path (Split-Path -Path (Get-Command -Name az).Source -Parent) -Parent $pythonCertStore = "${azCli2Path}\Lib\site-packages\certifi\cacert.pem" Write-Verbose "Python cert store location $pythonCertStore" $root = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new() if(Test-Path $cerFile) { $root.Import($cerFile) Write-Verbose "$(Get-Date) Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $cerFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $cerFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $cerFile -Algorithm SHA256).Hash.ToLower() $issuerEntry = [string]::Format("# Issuer: {0}", $root.Issuer) $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject) $labelEntry = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1]) $serialEntry = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower()) $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash) $sha1Entry = [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash) $sha256Entry = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash) $certText = (Get-Content -Path $cerFile -Raw).ToString().Replace("`r`n","`n") $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + ` $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText Write-Verbose "Adding the certificate content to Python Cert store" Add-Content $pythonCertStore $rootCertEntry Write-Verbose "Python Cert store was updated to allow the Azure Stack CA root certificate" } else { $errorMessage = "$cerFile required to update CLI was not found." Write-Verbose "ERROR: $errorMessage" throw "UpdatePythonCertStore: $errorMessage" } Write-Verbose "[END] Updating CLI cert store" } # Run the helper method in PowerShell: UpdatePythonCertStore -ApplianceRootCertPath C:\AzureLocalDisconnectedOperations\applianceRoot.cer
Configuración de la CLI de Azure para las operaciones desconectadas
Para configurar la CLI de Azure para las operaciones desconectadas en Azure Local, siga estos pasos:
Ejecute la
Get-ApplianceAzCliCloudConfigfunción para generar el archivo JSON que contiene los puntos de conexión de nube necesarios.Este es un script de PowerShell de ejemplo que puede ejecutar:
function Get-ApplianceAzCliCloudConfig { [CmdletBinding()] [OutputType([String])] param ( [Parameter(Position = 0, Mandatory = $true)] [string] $fqdn, [Parameter(Position = 1, Mandatory = $false)] [string] $exportToFile ) $cloudConfig = @" { "suffixes": { "keyvaultDns": ".vault.autonomous.cloud.private", "storageEndpoint": "autonomous.cloud.private", "acrLoginServerEndpoint": ".edgeacr.autonomous.cloud.private" }, "endpoints": { "activeDirectory": "https://login.autonomous.cloud.private/adfs", "activeDirectoryGraphResourceId": "https://graph.autonomous.cloud.private", "resourceManager": "https://armmanagement.autonomous.cloud.private", "microsoftGraphResourceId": "https://graph.autonomous.cloud.private", "activeDirectoryResourceId": "https://armmanagement.autonomous.cloud.private" } } "@ -replace "autonomous.cloud.private", $fqdn if ($exportToFile) { $cloudConfig | Set-Content -Path "$exportToFile" } return $cloudConfig }Use este método auxiliar para obtener los puntos de conexión y crear un archivo cloudConfig para la CLI:
az config set core.enable_broker_on_windows=false az config set core.instance_discovery=false $fqdn = "autonomous.cloud.private" $cloudConfigJson = Get-ApplianceAzCliCloudConfig -fqdn $fqdn # Write the content to a file cloudConfig.json $cloudConfigJson | Out-File -FilePath cloudConfig.jsonEste es un ejemplo de contenido en el archivo cloudconfig.json :
{ "suffixes": { "keyvaultDns": ".vault.autonomous.cloud.private", "storageEndpoint": "autonomous.cloud.private", "acrLoginServerEndpoint": ".edgeacr.autonomous.cloud.private" }, "endpoints": { "activeDirectory": "https://login.autonomous.cloud.private/adfs", "activeDirectoryGraphResourceId": "https://graph.autonomous.cloud.private", "resourceManager": "https://armmanagement.autonomous.cloud.private", "microsoftGraphResourceId": "https://graph.autonomous.cloud.private", "activeDirectoryResourceId": "https://armmanagement.autonomous.cloud.private" } }Registre la configuración en la nube con la CLI mediante el archivo cloudConfig.json .
az cloud register -n 'azure.local' --cloud-config '@cloudconfig.json' az cloud set -n azure.local
Extensiones para la CLI de Azure
Las extensiones de la CLI de Azure son ruedas de Python que se ejecutan como comandos de la CLI, pero no se incluyen con la CLI. Las extensiones le permiten acceder a comandos experimentales y preliminares y crear sus propias interfaces de la CLI. Cuando se usa una extensión por primera vez, recibirá un mensaje para instalarla.
Para obtener una lista de extensiones disponibles, ejecute el siguiente comando:
az extension list-available --output table
Para más información, consulte Instalación y administración de extensiones de la CLI de Azure.
Para instalar una versión específica de una extensión, ejecute el siguiente comando:
az extension add --name anextension --version 1.0.0
En la tabla siguiente se enumeran las extensiones de la CLI compatibles con las operaciones desconectadas locales de Azure, la versión máxima admitida de la extensión e información de instalación.
| Servicios de operaciones desconectados | Extensiones | Versión máxima de extensión admitida | Información de instalación |
|---|---|---|---|
| Servidores habilitados para Arc | az connectedmachine | 1.1.0 | az connectedmachine |
| Clústeres de Kubernetes habilitados para Azure Arc | az connectedk8s az k8s-extension az k8s-configuration az customlocation (comando de ubicación personalizada) |
connectedk8s: 1.6.2 k8s-extension: 1.7.0 k8sconfiguration: 2.0.0 customlocation: 0.1.4 |
az connectedk8s az k8s-extension az k8s-configuration flux az customlocation |
| Máquinas virtuales locales de Azure habilitadas por Azure Arc | az arcappliance az k8s-extension az customlocation az stack-hci-vm |
arcappliance: 1.7.1 k8s-extension: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.3 |
Habilitación de extensiones de máquina virtual de Azure mediante la CLI Solución de problemas de extensión de máquina virtual de servidores habilitados para Arc |
| Azure Kubernetes Service (AKS) Arc en Azure Local | az arcappliance az k8s-extension az customlocation az stack-hci-vm az aksarc |
arcappliance: 1.7.1 k8s-extension: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.3 aksarc: 1.5.74 |
Creación de clústeres de Kubernetes mediante la CLI de Azure |
| Proveedor de recursos locales de Azure | Arcappliance k8s-extension ubicación personalizada stack-hci-vm connectedk8s stack-hci |
arcappliance: 1.7.1 k8s-extension: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.3 connectedk8s: 1.6.2 stack-hci: 1.1.0 |
Instalación y administración de extensiones de la CLI de Azure |
| Azure Container Registry (Registro de Contenedores de Azure) | Integrada | ||
| Azure Policy | Integrada | Inicio rápido: Creación de una asignación de directiva para identificar recursos no conformes mediante la CLI de Azure | |
| Azure Key Vault | Integrada | Inicio rápido: Creación de un almacén de claves mediante la CLI de Azure |
Apéndice
Creación de una suscripción de Azure (en operaciones desconectadas)
Para crear una suscripción de Azure en operaciones desconectadas, ejecute este comando:
az account alias create --name 'aliasName’ --billing-scope '/providers/Microsoft.Billing/billingAccounts/defaultaccount' --display-name 'displayName' --workload 'Production'
Para especificar un propietario diferente al usuario actual, pase el subscriptionOwnerId parámetro y use az rest.
Este es un ejemplo:
$ownerId='<Owner ID>'
az rest --method put --uri "/providers/Microsoft.Subscription/aliases/aliastest?api-version=2021-10-01" --headers content-type="application/json" --body '{\"properties\": {\"displayName\": \"User Subscription 1\", \"workload\": \"Production\", \"billingScope\": \"/providers/Microsoft.Billing/billingAccounts/defaultaccount\", \"additionalProperties\":{\"subscriptionOwnerId\":\"'+$ownerId+'\"}}}'
Creación de una entidad de servicio para el registro de nodos
Usa la cuenta operativa para crear un principal de servicio para la inicialización de Arc en cada nodo local de Azure. Para el inicio, el rol Propietario es necesario en el nivel de suscripción.
Para crear el principal de servicio, siga estos pasos:
Configure la CLI en el equipo cliente y ejecute este comando:
$subscriptionName = 'Starter subscription' $resourcegroup = 'azurelocal-disconnected-operations' $appname = 'azlocalclusapp' az cloud set -n 'azure.local' az login az account set --subscription $subscriptionName $subscriptionId = az account show --query id --output tsv $rg = (az group create -n $resourcegroup -l autonomous)| ConvertFrom-Json az ad sp create-for-rbac -n $appname --role Owner --scopes "/subscriptions/$($subscriptionId)"Este es un ejemplo de salida:
{ "appId": "<AppId>", "displayName": "azlocalclusapp", "password": "<RETRACTED>", "tenant": "<RETRACTED>" }Copie el AppID y la contraseña para usarlos en la automatización de la línea de comandos. Inicie sesión usando este principal de servicio en lugar de un inicio de sesión interactivo o un código de dispositivo.
Solución de problemas de la CLI de Azure
Para solucionar problemas de la CLI de Azure, ejecute comandos de la CLI con el --debug parámetro para obtener registros detallados y un seguimiento de la pila. Si el cliente no confía en la entidad de certificación raíz, las solicitudes a los puntos de conexión de la nube privada pueden producir errores ssl o de conexión.