Bereitstellen in Azure Stack Hub App Service mithilfe von Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Dieser Artikel führt Sie durch das Einrichten einer CI/CD-Pipeline zum Bereitstellen einer Anwendung in App Services in einer Azure Stack Hub-Instanz mithilfe von Azure Pipelines.

In diesem Artikel erfahren Sie, wie Sie Folgendes erstellen oder überprüfen:

  • Anmeldeinformationen des Azure Stack Hub-Dienstprinzipals (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

Erstellen oder Überprüfen Ihres 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 für die Verwendung mit Ihrer Azure DevOps-Pipeline einen SPN mit den Zugriffsberechtigungen „Mitwirkender“ und den in diesen Anweisungen angegebenen Attributen.

Benutzer*innen von Azure Stack Hub verfügen nicht über die Berechtigung zum Erstellen des SPN. Sie müssen diesen Prinzipal von Ihrem Cloudbetreiber anfordern. Die Anweisungen werden hier bereitgestellt, damit Sie den SPN erstellen können, wenn Sie ein Cloudbetreiber sind. Alternativ können Sie den SPN validieren, wenn Sie Entwickler*in sind, die/der einen von einem Cloudbetreiber bereitgestellten SPN in einem Workflow verwendet.

Der Cloudbetreiber muss den SPN mithilfe der Azure CLI erstellen.

Die folgenden Codeschnipsel wurden für einen Windows-Computer unter Verwendung der PowerShell-Eingabeaufforderung mit der Azure-Befehlszeilenschnittstelle für Azure Stack Hub geschrieben. Wenn Sie die Befehlszeilenschnittstelle auf einem Linux-Computer mit der Bash verwenden, entfernen Sie entweder die Zeilenerweiterung oder ersetzen sie durch einen \.

  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 Befehl register für eine neue Umgebung oder den Befehl update für eine vorhandene Umgebung. 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 über keine Cloudbetreiberberechtigungen verfügen, können Sie sich auch mit dem von Ihrem Cloudbetreiber bereitgestellten SPN anmelden. Sie benötigen die Client-ID, das Geheimnis 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 der 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 Runtime 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 den 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 von 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 (Project settings) und dann Dienstverbindungen (Service Connections) aus.

  3. Wählen Sie Dienstverbindungen>Neue Dienstverbindung aus.

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

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

  6. Wählen Sie unter Umgebung die Option Azure Stack 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.)

    Erstellen einer Dienstverbindung für Azure Stack Hub

Erstellen des Repositorys und Hinzufügen einer Pipeline

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

  2. Öffnen Sie das Repository. Wählen Sie das Repository und dann Durchsuchen aus.

  3. Wählen Sie Pipelines aus.

  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 Datei azure-pipelines.yml.

  9. Fügen Sie folgenden YAML-Code 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 in der Build- oder Releasepipeline eine Variable mit dem Namen VSTS_ARM_REST_IGNORE_SSL_ERRORS auf den Wert true fest.

  10. Ersetzen Sie den Wert azureSubscription durch den Namen Ihrer Dienstverbindung.

  11. Ersetzen Sie appName durch Ihren 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