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

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 \.

  1. 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.
  2. Öffnen Sie das Befehlszeilentool, z B. Windows PowerShell oder Bash, und melden Sie sich an. Verwenden Sie den folgenden Befehl:

    az login
    
  3. Verwenden Sie den register Befehl für eine neue Umgebung oder den update 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
    
  4. Rufen Sie Ihre Abonnement-ID und die Ressourcengruppe ab, die Sie für den SPN verwenden möchten.

  5. 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
    
  6. Ü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

  1. Melden Sie sich beim Azure Stack Hub-Portal an.
  2. Wählen Sie Ressource erstellen>Web + Mobil>Web-Apps aus.
  3. Wählen Sie Ihr Abonnement aus.
  4. Erstellen Sie eine Ressourcengruppe, oder wählen Sie eine Ressourcengruppe aus.
  5. 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>.
  6. 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.
  7. Wählen Sie das Betriebssystem aus, das Ihre Runtime und Ihre App hosten soll.
  8. Wählen Sie die Region für Ihre Azure Stack Hub-Instanz aus, oder geben Sie sie ein.
  9. Wählen Sie den Plan basierend auf Ihrer Azure Stack Hub-Instanz, der Region und des Betriebssystems der App aus.
  10. Klicken Sie auf Überprüfen + erstellen.
  11. Überprüfen Sie Ihre Web-App. Klicken Sie auf Erstellen.
  12. Wählen Sie Zu Ressource wechseln aus.
  13. 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.

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie "Projekteinstellungen" und dann "Dienstverbindungen" aus.

  3. Wählen Sie "Service connectionsNew>Service"-Verbindung aus.

  4. Wählen Sie Azure Resource Manager aus, und wählen Sie dann "Weiter" aus.

  5. Wählen Sie "Dienstprinzipal" (manuell) aus.

  6. Wählen Sie Azure Stack aus Umgebung aus.

  7. Füllen Sie das Formular aus, und wählen Sie dann "Überprüfen" und "Speichern" aus.

  8. Benennen Sie Ihre Dienstverbindung. (Sie benötigen den Dienstverbindungsnamen, um Ihre Yaml-Pipeline zu erstellen).

    Create a service connection for Azure Stack Hub

Erstellen Ihres Repositorys und Hinzufügen der Pipeline

  1. Wenn Sie den Web-App-Code nicht zum Repository hinzugefügt haben, fügen Sie ihn jetzt hinzu.

  2. Öffnen Sie das Repository. Wählen Sie das Repository aus, und wählen Sie "Durchsuchen" aus.

  3. Pipelines auswählen

  4. Wählen Sie Neue Pipeline aus.

  5. Wählen sie Azure Repos Git aus.

  6. Wählen Sie Ihr Repository aus.

  7. Wählen Sie Starterpipeline aus.

  8. Navigieren Sie zurück zum Repository, und öffnen Sie die azure-pipelines.yml.

  9. 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 Wert true in der Build- oder Releasepipeline fest, wie in diesem Beispiel.

  10. Aktualisieren Sie den azureSubscription Wert mit dem Namen Ihrer Dienstverbindung.

  11. 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:

Nächste Schritte