Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie die Azure Command-Line Interface (CLI) und ihre Erweiterungen für getrennte Vorgänge für Azure Local installieren und konfigurieren. Sie bietet eine Übersicht über CLI, unterstützte Versionen, Installationsschritte und das Einrichten der CLI für getrennte Vorgänge.
Informationen zu Azure CLI
CLI ist eine vielseitige, plattformübergreifende Befehlszeilenschnittstelle, mit der Sie Azure-Ressourcen für lokale getrennte Azure-Vorgänge erstellen und verwalten können. Weitere Informationen finden Sie unter Was ist Azure CLI.
Unterstützte Versionen für CLI und Erweiterung
Die für Azure Local-Vorgänge im getrennten Modus unterstützte Version der Azure CLI ist 2.81.0. Siehe Azure CLI Release-Hinweise. Führen Sie Folgendes aus az version, um die installierte Version zu überprüfen:
az version
Weitere Informationen finden Sie unter Azure CLI-Befehle.
Installieren der Azure-Befehlszeilenschnittstelle
So installieren Sie die 32-Bit-Version von CLI:
- Laden Sie Version 2.78.0 herunter.
- Installieren Sie die CLI lokal auf Linux-, macOS- oder Windows-Computern.
Hinweis
Die unterstützte Version der Azure CLI für Azure Local-Vorgänge im getrennten Modus ist 2.81.0. Installieren Sie für lokale Azure-Knoten die 32-Bit-Azure CLI, um Bereitstellungsfehler zu vermeiden. Verwenden Sie die 64-Bit-Azure CLI auf Clientcomputern.
Konfigurieren von Zertifikaten für Azure CLI
Um CLI zu verwenden, müssen Sie dem Stammzertifikat der Zertifizierungsstelle (CA) auf Ihrem Computer vertrauen.
Für getrennte Vorgänge:
- Erfahren Sie mehr über die Public Key-Infrastruktur (PKI) für Azure Local mit getrennten Vorgängen.
- Richten Sie die Zertifikatvertrauensstellung für Azure CLI über PowerShell ein.
Wählen Sie eine der folgenden Python-Vertrauensstellungsoptionen aus:
Option 1: Verwenden des Betriebssystemvertrauensspeichers (empfohlen). Installieren Sie ein Python-Modul, mit dem Python den Os Trust Store verwenden kann.
Führen Sie dieses Windows-Beispiel in PowerShell aus, um das Pip-system-certs-Modul in der Python-Umgebung zu installieren, die mit Azure CLI gebündelt ist. Ersetzen Sie die Beispielpfade durch den tatsächlichen Pfad ihres Systems.
& "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe" -m pip install pip-system-certsWenn Ihr Client das Stammzertifikat nicht importiert hat, verwenden Sie diesen Befehl, um es zu importieren.
$applianceRootCertFile = "C:\AzureLocalDisconnectedOperations\applianceRoot.cer" Import-Certificate -FilePath $applianceRootCertFile -CertStoreLocation Cert:\LocalMachine\Root -Confirm:$false
Option 2: Aktualisieren Sie die PEM-Datei , die von der Azure CLI-Installation verwendet wird.
Hier ist ein Beispiel für ein PowerShell-Skript:
# 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
Einrichten der Azure CLI für getrennte Vorgänge
Führen Sie die folgenden Schritte aus, um Azure CLI für getrennte Vorgänge in Azure Local einzurichten:
Führen Sie die
Get-ApplianceAzCliCloudConfigFunktion aus, um die JSON-Datei zu generieren, die die erforderlichen Cloudendpunkte enthält.Hier ist ein Beispiel für ein PowerShell-Skript, das Sie ausführen können:
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 }Verwenden Sie diese Hilfsmethode, um die Endpunkte abzurufen und eine CloudConfig-Datei für CLI zu erstellen:
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.jsonHier ist ein Beispiel für Inhalte in der cloudconfig.json-Datei :
{ "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" } }Registrieren Sie die Cloudkonfiguration mit CLI mithilfe der cloudConfig.json-Datei .
az cloud register -n 'azure.local' --cloud-config '@cloudconfig.json' az cloud set -n azure.local
Erweiterungen für Azure CLI
Azure CLI-Erweiterungen sind Python-Räder, die als CLI-Befehle ausgeführt werden, aber nicht mit CLI ausgeliefert werden. Mit Erweiterungen können Sie auf experimentelle Befehle und Vorabversionen zugreifen und eigene CLI-Schnittstellen erstellen. Wenn Sie eine Erweiterung zum ersten Mal verwenden, erhalten Sie eine Aufforderung zur Installation.
Führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren Erweiterungen abzurufen:
az extension list-available --output table
Weitere Informationen finden Sie unter Installieren und Verwalten von Azure CLI-Erweiterungen.
Führen Sie den folgenden Befehl aus, um eine bestimmte Version einer Erweiterung zu installieren:
az extension add --name anextension --version 1.0.0
In der folgenden Tabelle sind die CLI-Erweiterungen aufgeführt, die von azure Local disconnected Operations, der maximalen unterstützten Erweiterungsversion und Installationsinformationen unterstützt werden.
| Getrennte Betriebsdienste | Erweiterungen | Maximale Unterstützte Erweiterungsversion | Installationsinformationen |
|---|---|---|---|
| Arc-fähige Server | az Connected Machine | 1.1.0 | az connectedmachine |
| Kubernetes-Cluster mit Azure Arc-Unterstützung. | az connectedk8s az k8s-erweiterung az k8s-configuration az customlocation |
connectedk8s: 1.6.2 k8s-Erweiterung: 1.7.0 k8sconfiguration: 2.0.0 customlocation: 0.1.4 |
az connectedk8s az k8s-erweiterung az k8s-Konfigurationsfluss az customlocation |
| Azure-Lokale VMs, aktiviert durch Azure Arc | az arcappliance az k8s-erweiterung az customlocation az stack-hci-vm |
arcappliance: 1.7.1 k8s-Erweiterung: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.0 |
Aktivieren von Azure VM-Erweiterungen mit CLI Behandeln von Problemen mit der VM-Erweiterung von Arc-fähigen Servern |
| Azure Kubernetes Service (AKS) Arc auf Azure Lokal | az arcappliance az k8s-erweiterung az customlocation az stack-hci-vm az aksarc |
arcappliance: 1.7.1 k8s-Erweiterung: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.0 aksarc: 1.2.23 |
Erstellen von Kubernetes-Clustern mit Azure CLI |
| Azure Lokaler Ressourcenanbieter | Arcappliance k8s-Erweiterung benutzerdefinierter Standort stack-hci-vm connectedk8s stack-hci |
arcappliance: 1.7.1 k8s-Erweiterung: 1.7.0 customlocation: 0.1.4 stack-hci-vm: 1.12.0 connectedk8s: 1.6.2 stack-hci: 1.1.0 |
Installieren und Verwalten von Azure CLI-Erweiterungen |
| Azure Container Registry (Registrierungsdienst für Container von Azure) | Integriert | ||
| Azure-Richtlinie | Integriert | Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht kompatibler Ressourcen mithilfe der Azure CLI | |
| Azure Key Vault (ein Dienst zur sicheren Verwaltung kryptografischer Schlüssel) | Integriert | Schnellstartanleitung: Erstellen eines Key Vaults mit der Azure CLI |
Anhang
Azure-Abonnement erstellen (bei getrennten Operationen)
Führen Sie den folgenden Befehl aus, um ein Azure-Abonnement für Offline-Vorgänge zu erstellen:
az account alias create --name 'aliasName’ --billing-scope '/providers/Microsoft.Billing/billingAccounts/defaultaccount' --display-name 'displayName' --workload 'Production'
Wenn Sie einen anderen Besitzer als den aktuellen Benutzer angeben möchten, übergeben Sie den subscriptionOwnerId Parameter und verwenden Sie az restdiesen.
Ein Beispiel:
$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+'\"}}}'
Erstellen eines Dienstprinzipals für die Knotenregistrierung
Verwenden Sie das Operatorkonto, um einen Dienstprinzipal für den Arc-Initialisierungsvorgang jedes lokalen Azure-Knotens zu erstellen. Für bootstrap ist die Rolle "Besitzer" auf Abonnementebene erforderlich.
Um den Dienstprinzipal zu erstellen, führen Sie die folgenden Schritte aus:
Konfigurieren Sie CLI auf Ihrem Clientcomputer, und führen Sie diesen Befehl aus:
$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)"Hier ist eine Beispielausgabe:
{ "appId": "<AppId>", "displayName": "azlocalclusapp", "password": "<RETRACTED>", "tenant": "<RETRACTED>" }Kopieren Sie die AppID und das Kennwort , um sie in der Befehlszeilenautomatisierung zu verwenden. Melden Sie sich mit diesem Dienstprinzipal anstelle eines interaktiven Anmelde- oder Gerätecodes an.
Problembehandlung bei Azure CLI
Führen Sie CLI-Befehle mit dem --debug Parameter aus, um detaillierte Protokolle und eine Stapelablaufverfolgung zu erhalten, um Probleme mit Azure CLI zu beheben. Wenn der Client Ihrer Stammzertifizierungsstelle nicht vertraut, können Anforderungen an private Cloud-Endpunkte mit SSL- oder Verbindungsfehlern fehlschlagen.