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.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Dieser Artikel führt Sie durch das Einrichten einer CI/CD-Pipeline für die Bereitstellung einer Anwendung für App-Dienste in einer Azure Stack Hub-Instanz mit Azure Pipelines.
In diesem Artikel erfahren Sie, wie Sie Folgendes erstellen oder überprüfen:
- Anmeldeinformationen für den Azure Stack Hub-Dienstprinzipal (SPN) für die Pipeline.
- Eine Web-App in Ihrer Azure Stack Hub-Instanz.
- Eine Dienstverbindung mit Ihrer Azure Stack Hub-Instanz.
- Ein Repository mit Ihrem App-Code für die Bereitstellung in Ihrer App
Voraussetzungen
- Zugriff auf azure Stack Hub-Instanz mit aktiviertem App Service RP.
- Eine Azure DevOps-Lösung , die Ihrem Azure Stack Hub-Mandanten zugeordnet ist.
Erstellen oder Überprüfen des SPN
Ein SPN stellt rollenbasierte Anmeldeinformationen bereit, sodass Prozesse außerhalb von Azure eine Verbindung mit Ressourcen herstellen und mit diesen interagieren können. Sie benötigen einen SPN mit Mitwirkenderzugriff und die in diesen Anweisungen angegebenen Attribute für die Verwendung mit Ihrer Azure DevOps-Pipeline.
Als Benutzer von Azure Stack Hub verfügen Sie nicht über die Berechtigung zum Erstellen des SPN. Sie müssen diesen Prinzipal von Ihrem Cloudoperator anfordern. Die Anweisungen werden hier bereitgestellt, damit Sie spN erstellen können, wenn Sie ein Cloudoperator sind, oder Sie können den SPN überprüfen, wenn Sie ein Entwickler sind, der einen SPN in Ihrem Workflow verwendet, der von einem Cloudoperator bereitgestellt wird.
Der Cloudoperator muss den SPN mit Azure CLI erstellen.
Die folgenden Codeausschnitte werden für einen Windows-Computer mithilfe der PowerShell-Eingabeaufforderung mit Azure CLI für Azure Stack Hub geschrieben. Wenn Sie CLI auf einem Linux-Computer und bash verwenden, entfernen Sie entweder die Zeilenerweiterung, oder ersetzen Sie sie durch eine \.
Bereiten Sie die Werte der folgenden Parameter vor, die zum Erstellen des SPN verwendet werden:
Parameter Example Description endpoint-resource-manager „https://management.orlando.azurestack.corp.microsoft.com" Der Ressourcenverwaltungsendpunkt. Suffixspeicherendpunkt "orlando.azurestack.corp.microsoft.com" Das Endpunktsuffix für Speicherkonten. suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Das Dns-Suffix des Key Vault-Diensts. endpoint-active-directory-graph-resource-id „https://graph.windows.net/" Die Active Directory-Ressourcen-ID. endpoint-sql-management https://notsupported Der SQL Server-Verwaltungsendpunkt. Legen Sie dies auf https://notsupportedProfil 2019-03-01-Hybrid Profil, das für diese Cloud verwendet werden soll. Öffnen Sie Ihr Befehlszeilentool wie Windows PowerShell oder Bash, und melden Sie sich an. Verwenden Sie den folgenden Befehl:
az loginVerwenden Sie den
registerBefehl für eine neue Umgebung oder denupdateBefehl, wenn Sie eine vorhandene Umgebung verwenden. Verwenden Sie den folgenden Befehl.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2019-03-01-hybridRufen Sie Ihre Abonnement-ID und Ressourcengruppe ab, die Sie für den SPN verwenden möchten.
Erstellen Sie den SPN mit dem folgenden Befehl mit der Abonnement-ID und Ressourcengruppe:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-authWenn Sie keine Cloudoperatorberechtigungen besitzen, können Sie sich auch mit dem SPN anmelden, das Ihnen vom Cloudoperator zur Verfügung gestellt wird. Sie benötigen die Client-ID, den geheimen Schlüssel und Ihre Mandanten-ID. Mit diesen Werten können Sie die folgenden Azure CLI-Befehle verwenden, um das JSON-Objekt zu erstellen, das die Werte enthält, die Sie zum Erstellen Ihrer Dienstverbindung benötigen.
az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions az account showÜberprüfen Sie das resultierende JSON-Objekt. Sie verwenden das JSON-Objekt, um Ihre Dienstverbindung zu erstellen. Das JSON-Objekt sollte die folgenden Attribute aufweisen:
{ "environmentName": "<Environment name>", "homeTenantId": "<Tenant ID for the SPN>", "id": "<Application ID for the SPN>", "isDefault": true, "managedByTenants": [], "name": "<Tenant name>", "state": "Enabled", "tenantId": "<Tenant ID for the SPN>", "user": { "name": "<User email address>", "type": "user" } }
Erstellen des Web-App-Ziels
- Melden Sie sich beim Azure Stack Hub-Portal an.
- Wählen Sie Ressource erstellen>Web + Mobil>Web-Apps aus.
- Wählen Sie Ihr Abonnement aus.
- Erstellen oder Auswählen einer Ressourcengruppe.
- Geben Sie den Namen Ihrer App ein. Der Name der App wird beispielsweise in der URL für Ihre App angezeigt.
yourappname.appservice.<region>.<FQDN> - Wählen Sie den Laufzeitstapel für Ihre App aus. Die Laufzeit muss mit dem Code übereinstimmen, den Sie für Ihre Web-App verwenden möchten.
- Wählen Sie das Betriebssystem aus, das Ihre Laufzeit und App hosten soll.
- Wählen Sie die Region für Ihre Azure Stack Hub-Instanz aus, oder geben Sie sie ein.
- Wählen Sie den Plan basierend auf Ihrer Azure Stack Hub-Instanz, -Region und -App-Betriebssystem aus.
- Wählen Sie Überprüfen + Erstellen aus.
- Überprüfen Sie Ihre Web-App. Wählen Sie "Erstellen" aus.
- Wählen Sie Zur Ressourcewechseln.
- Notieren Sie sich ihren App-Namen. Sie fügen den Namen dem yml-Dokument hinzu, das Ihre Pipeline in Ihrem Repository definiert.
Erstellen einer Dienstverbindung
Erstellen Sie eine Dienstverbindung. Sie benötigen die Werte aus Ihrem SPN und den Namen Ihres Azure Stack Hub-Abonnements.
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.
Wählen Sie "Projekteinstellungen" und dann "Dienstverbindungen" aus.
Wählen Sie "Dienstverbindungen>Neue Dienstverbindung" aus.
Wählen Sie Azure Resource Manager und dann "Weiter" aus.
Wählen Sie den Dienstprinzipal (manuell) aus.
Wählen Sie Azure Stack aus Umgebung aus.
Füllen Sie das Formular aus, und wählen Sie dann "Überprüfen und speichern" aus.
Geben Sie Ihrer Dienstverbindung einen Namen. (Sie benötigen den Dienstverbindungsnamen, um Ihre Yaml-Pipeline zu erstellen).
Erstellen Ihres Repositorys und Hinzufügen der Pipeline
Wenn Sie den Web-App-Code nicht zum Repository hinzugefügt haben, fügen Sie ihn jetzt hinzu.
Öffnen Sie das Repository. Wählen Sie das Repository aus, und wählen Sie "Durchsuchen" aus.
Pipelines auswählen
Wählen Sie "Neue Pipeline" aus.
Wählen Sie Azure Repos Git aus.
Wählen Sie Ihr Repository aus.
Wählen Sie die Startpipeline aus.
Navigieren Sie zurück zum Repository, und öffnen Sie die
azure-pipelines.yml.Fügen Sie folgendes Yaml hinzu:
# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml trigger: - main variables: azureSubscription: '<your connection name>' VSTS_ARM_REST_IGNORE_SSL_ERRORS: true steps: - task: AzureWebApp@1 displayName: Azure Web App Deploy inputs: azureSubscription: $(azureSubscription) appName: <your-app-name> package: '$(System.DefaultWorkingDirectory)'Hinweis
Um SSL-Fehler zu ignorieren, legen Sie wie in diesem Beispiel eine Variable fest, die auf den Wert
VSTS_ARM_REST_IGNORE_SSL_ERRORSin der Build- oder Releasepipeline benannttrueist.Aktualisieren Sie den
azureSubscriptionWert mit dem Namen Ihrer Dienstverbindung.Aktualisieren Sie den
appNameApp-Namen. Sie können jetzt bereitstellen.
Hinweise zur Verwendung von Azure-Aufgaben mit Azure Stack Hub
Die folgenden Azure-Aufgaben werden mit Azure Stack Hub überprüft:
- Azure PowerShell
- Azure File Copy
- Azure-Ressourcengruppenbereitstellung
- Bereitstellen von Azure App Service
- Azure App Service Verwalten
- Azure SQL-Datenbankbereitstellung