Erstellen der Infrastruktur als Code (Infrastructure-as-Code, IaC)

Abgeschlossen

Die Azure Developer CLI (azd) kann Ressourcen in Azure mithilfe von IaC-Dateien (Infrastructure-as-Code) bereitstellen, die entweder in Bicep oder Terraform geschrieben wurden. Mit Infrastructure-as-Code können Sie Infrastrukturressourcen und Konfigurationen in deklarativen Definitionsdateien definieren, die bei jeder Bereitstellung zuverlässig dieselben Umgebungen generieren. azd führt diese Dateien aus, um die Azure-Ressourcen zu erstellen, die zum Hosten Ihrer App erforderlich sind. Weitere Informationen zur Infrastructure-as-Code finden Sie in der Dokumentation Was ist Infrastructure-as-Code?.

In dieser Lerneinheit fügen Sie Ihrer Vorlage Bicep-Code hinzu, um die erforderlichen Ressourcen für Ihre App bereitzustellen. Vorkenntnisse in Bicep sind für dieses Modul nicht erforderlich. Wenn Sie jedoch planen, umfassend mit azd-Vorlagen zu arbeiten, ist es eine gute Idee, sich zumindest mit den Grundlagen von Bicep oder Terraform vertraut zu machen. Weitere Informationen zu Bicep finden Sie im Schulungspfad Grundlagen von Bicep.

Die Bicep- oder Terraform-Dateien für Ihre Vorlage befinden sich im infra-Ordner. Die ausgewählte Bicep-Startervorlage hat drei Dateien als Startpunkt generiert:

  • main.bicep dient als Haupteinstiegspunkt für die Bicep-Ausführung und wird verwendet, um die Ressourcen zu definieren, die in Azure bereitgestellt werden. Die main.bicep-Datei kann auch auf andere Bicep-Module (Dateien) verweisen, mit denen Sie Ressourcendefinitionen in präzisere, wiederverwendbare Dateien extrahieren können.
  • abbreviations.json ist eine JSON-Datei, die viele hilfreiche Namenskürzel enthält. Diese Datei wird während der Ausführung in die main.bicep-Datei geladen und bietet konsistente, logische Namenspräfixe für verschiedene Azure-Ressourcen.
  • main.parameters.json ist eine JSON-Datei, die Standardwerte für wichtige Vorlagenparameter definiert, z. B. den Azure-Standardspeicherort oder den Umgebungsnamen.

Sie können die erforderlichen Azure-Ressourcen für Ihre App definieren und bereitstellen, indem Sie die main.bicep-Datei aktualisieren und weitere Bicep-Dateien erstellen. Main.bicep orchestriert in der Regel die Ausführung anderer Bicep-Module, indem Parameter zwischen ihnen übergeben werden. In diesem Beispiel erstellen Sie ein zusätzliches Bicep-Modul, um die Azure App Service-Instanz zu definieren, die Ihre Anwendung hosten soll.

  1. Erstellen Sie im infra-Ordner Ihrer Vorlage eine neue Datei mit dem Namen app.bicep.

  2. Öffnen Sie die app.bicep-Datei, und fügen Sie den folgenden Codeschnipsel ein: Die Codekommentare beschreiben den Zweck der einzelnen Codeabschnitte.

    // Define parameters that can be passed into the module
    // Parameters allow a module to be reusable
    @description('The location of where to deploy resources')
    param location string
    
    @description('The name of the App Service Plan')
    param appServicePlanName string
    
    @description('The name of the App Service')
    param appServiceName string
    
    // Define the App Service Plan to manage compute resources
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      properties: {
        reserved: true
      }
      sku: {
        name: 'F1'
      }
      kind: 'linux'
    }
    
    // Define the App Service to host the application
    resource appService 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          linuxFxVersion: 'DOTNETCORE|6.0'
        }
      }
        // Tag used to reference the service in the Azure.yaml file
        tags: { 'azd-service-name': 'web' }
    }
    

    Der Codeschnipsel erfüllt folgende Aufgaben:

    • Er definiert eine Gruppe von Parametern, die an das Modul übergeben werden können, um es wiederverwendbar und konfigurierbar zu machen. Sie können mehr Werte in den Ressourcendefinitionen parametrisieren, um das Modul flexibler zu gestalten.
    • Er definiert einen App Service-Plan zum Verwalten der Computeressourcen für App Service-Instanzen.
    • Er definiert die App Service-Instanz zum Hosten der bereitgestellten Anwendung.

    Hinweis

    Die Bicep-Definition der App Service-Instanz enthält ein azd-service-name-Tag, das später von der Azure.yaml-Konfigurationsdatei verwendet wird, um einen Ordner Ihres App-Quellcodes mit der App Service-Instanz zu verknüpfen.

  3. Das neue Bicep-Modul erstellt eine App Service-Instanz für Ihre Vorlage, Sie müssen jedoch main.bicep aktualisieren, damit sie verwendet werden kann. Suchen Sie den infra-Ordner in Ihrem Editor, und öffnen Sie die main.bicep-Datei.

    Die von der Startervorlage generierte main.bicep-Datei enthält hilfreiche Setupkonfigurationen für Sie. Die Datei definiert beispielsweise wichtige Parameter wie environmentName und location. Standardmäßig werden diese Parameter aus main.parameters.json aufgefüllt, wenn sie in dieser Datei enthalten sind, aber Sie können sie auch überschreiben. Der Startcode lädt auch die abbreviations.json-Datei, damit sie für die Arbeit zur Verfügung steht, erstellt einige nützliche Tags und Token für die Benennung von Diensten und enthält nützliche Kommentare mit Tipps für den Einstieg.

  4. Suchen Sie am Ende der main.bicep-Datei den Kommentar, der dem folgenden ähnelt:

    // Add resources to be provisioned below.
    // A full example that leverages azd bicep modules can be seen in the todo-python-mongo template:
    // https://github.com/Azure-Samples/todo-python-mongo/tree/main/infra
    

    In diesem Platzhalterkommentar wird hervorgehoben, wo zusätzliche Ressourcen enthalten sind, die Sie bereitstellen möchten. Wir möchten das Bicep-Modul einschließen, das Sie für die App Service-Instanz erstellen. Fügen Sie daher direkt nach dem Kommentar den folgenden Codeschnipsel ein:

    module web 'app.bicep' = {
      name: '${deployment().name}-app'
      scope: rg
      params: {
        location: location
        appServiceName: '${abbrs.webSitesAppService}${resourceToken}'
        appServicePlanName: '${abbrs.webServerFarms}${resourceToken}'
      }
    }
    

    Der Codeschnipsel erfüllt folgende Aufgaben:

    • Er definiert ein Bicep-Modul, das auf die Datei verweist, die Sie im vorherigen Schritt erstellt haben.
    • Er weist der Azure-Bereitstellungsgruppe einen Namen zu und bezieht ihn auf die Ressourcengruppe, die in main.bicep erstellt wurde.
    • Er übergibt Parameter mithilfe der abbreviations.json-Werte an das Modul, um die Benennung zu unterstützen.

Die Infrastrukturdateien für den App-Quellcode sind jetzt Teil Ihrer Vorlage. In der nächsten Lerneinheit fügen Sie Konfigurationen hinzu, die die Beziehung zwischen diesen Teilen für den azd-Bereitstellungsprozess beschreiben.