Bereitstellen in Azure Stack Hub App Service mithilfe von Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
In diesem Artikel werden Sie durch das Einrichten einer CI/CD-Pipeline zum Bereitstellen einer Anwendung für App-Dienste in einer Azure Stack Hub-Instanz mit Azure Pipelines geführt.
In diesem Artikel erfahren Sie, wie Sie Folgendes erstellen oder überprüfen können:
- Azure Stack Hub-Dienstprinzipal-Anmeldeinformationen (SPN) für die Pipeline.
- Eine Web-App in Ihrer Azure Stack Hub-Instanz.
- Eine Dienstverbindung zu Ihrer Azure Stack Hub-Instanz.
- Ein Repo mit Ihrem App-Code, der für Ihre App bereitgestellt werden soll
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 zur Verfügung, sodass Prozesse außerhalb von Azure Verbindungen mit Ressourcen herstellen und mit diesen interagieren können. Sie benötigen einen SPN mit Mitwirkenderzugriff und die in diesen Anweisungen angegebenen Attribute, die mit Ihrer Azure DevOps-Pipeline verwendet werden sollen.
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 den SPN erstellen können, wenn Sie ein Cloudoperator sind, oder Sie können den SPN überprüfen, wenn Sie ein Entwickler mit einem SPN in Ihrem Workflow sind, der von einem Cloudoperator bereitgestellt wird.
Der Cloudbetreiber muss den SPN mithilfe der 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 Linienerweiterung, oder ersetzen Sie sie durch eine \
.
Bereiten Sie die Werte der folgenden Parameter vor, die zum Erstellen des SPN verwendet werden:
Parameter Beispiel BESCHREIBUNG endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Der Ressourcenverwaltungsendpunkt. suffix-storage-endpoint „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/" Active Directory-Ressourcen-ID endpoint-sql-management https://notsupported Der SQL Server-Verwaltungsendpunkt. Auf https://notsupported
Profil 2019-03-01-hybrid Das Profil, das für diese Cloud verwendet werden soll. Öffnen Sie das Befehlszeilentool, z B. Windows PowerShell oder Bash, und melden Sie sich an. Verwenden Sie den folgenden Befehl:
az login
Verwenden Sie den
register
Befehl für eine neue Umgebung oder denupdate
Befehl, 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-hybrid
Rufen Sie Ihre Abonnement-ID und die Ressourcengruppe ab, die Sie für den SPN verwenden möchten.
Erstellen Sie den SPN mit dem folgenden Befehl mit der Abonnement-ID und der Ressourcengruppe:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Wenn Sie nicht über Cloudoperatorrechte verfügen, können Sie sich auch mit dem SPN anmelden, das Sie von Ihrem Cloudoperator bereitgestellt haben. 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 Sie eine Ressourcengruppe, oder wählen Sie eine Ressourcengruppe aus.
- Geben Sie den Namen Ihrer App ein. Der Name der App wird in der URL für Ihre App angezeigt, zum Beispiel
yourappname.appservice.<region>.<FQDN>
. - Wählen Sie den Runtimestapel 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 Runtime und Ihre 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, der Region und des Betriebssystems der App aus.
- Klicken Sie auf Überprüfen + erstellen.
- Überprüfen Sie Ihre Web-App. Klicken Sie auf Erstellen.
- Wählen Sie Zu Ressource wechseln aus.
- 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 "Service connectionsNew>Service"-Verbindung aus.
Wählen Sie Azure Resource Manager aus, und wählen Sie dann "Weiter" aus.
Wählen Sie "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.
Benennen Sie Ihre Dienstverbindung. (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 Starterpipeline 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: - master 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 eine Variable mit
VSTS_ARM_REST_IGNORE_SSL_ERRORS
dem Namen auf den Werttrue
in der Build- oder Releasepipeline fest, wie in diesem Beispiel.Aktualisieren Sie den
azureSubscription
Wert mit dem Namen Ihrer Dienstverbindung.Aktualisieren Sie den
appName
App-Namen. Jetzt können Sie mit der Bereitstellung beginnen.
Hinweise zur Verwendung von Azure-Aufgaben mit Azure Stack Hub
Die folgenden Azure-Aufgaben werden mit Azure Stack Hub überprüft:
- Azure PowerShell
- Azure-Dateikopiervorgang
- Azure-Ressourcengruppenbereitstellung
- Bereitstellen von Azure App Service
- Azure App Service-Verwaltung
- Azure SQL-Datenbank-Bereitstellung