Skapa infrastrukturen som kod

Slutförd

Azure Developer CLI (azd) kan etablera resurser i Azure med hjälp av IaC-filer (infrastruktur som kod) som skrivits i antingen Bicep eller Terraform. Med infrastruktur som kod kan du definiera infrastrukturresurser och konfigurationer i deklarativa definitionsfiler som på ett tillförlitligt sätt genererar samma miljöer varje gång de distribueras. azd kör dessa filer för att skapa de Azure-resurser som krävs för att vara värd för din app. Du kan lära dig mer om infrastruktur som kod i dokumentationen Vad är infrastruktur som kod?

I den här lektionen lägger du till Bicep-kod i mallen för att etablera nödvändiga resurser för din app. Tidigare kunskaper om Bicep krävs inte för att slutföra den här modulen. Men om du planerar att arbeta med azd mallar i stor utsträckning är det en bra idé att bekanta dig med åtminstone grunderna i Bicep eller Terraform. Läs mer om Bicep på utbildningsvägen Grunderna i Bicep .

Bicep- eller Terraform-filerna för mallen infra finns i mappen. Den Bicep-startmall som du valde genererade tre filer som utgångspunkt:

  • main.bicep – Fungerar som huvudinmatningspunkt för Bicep-körning och används för att definiera de resurser som ska etableras i Azure. Filen main.bicep kan också referera till andra Bicep-moduler (filer) som gör att du kan extrahera resursdefinitioner till mer detaljerade, återanvändbara filer.
  • abbreviations.json – En JSON-fil som innehåller många användbara namngivningsförkortningar. Den här filen läses in i filen under körningen main.bicep och innehåller en uppsättning konsekventa, logiska namngivningsprefix för olika Azure-resurser.
  • main.parameters.json – En JSON-fil som definierar standardvärden för viktiga mallparametrar, till exempel standardplatsen för Azure eller miljönamnet.

Du kan definiera och etablera nödvändiga Azure-resurser för din app genom att uppdatera main.bicep filen och skapa fler Bicep-filer. Main.bicep samordnar vanligtvis körningen av andra Bicep-moduler genom att skicka parametrar mellan dem. I det här exemplet skapar du ytterligare en Bicep-modul för att definiera den Azure App Service som ska vara värd för ditt program.

  1. I mappen i mallen infra skapar du en ny fil med namnet app.bicep.

  2. app.bicep Öppna filen och klistra in följande kodfragment. Kodkommentarna beskriver syftet med varje kodavsnitt.

    // 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' }
    }
    

    Kodfragmentet utför följande uppgifter:

    • Definierar en uppsättning parametrar som kan skickas till modulen för att göra den återanvändbar och konfigurerbar. Du kan välja att parameterisera fler av värdena i resursdefinitionerna för att göra modulen mer flexibel.
    • Definierar en App Service-plan för att hantera beräkningsresurserna för App Service-instanser.
    • Definierar App Service som värd för det distribuerade programmet.

    Kommentar

    En azd-service-name tagg ingår i App Service Bicep-definitionen som ska användas senare av Azure.yaml konfigurationsfilen för att associera dig med din app-källkod med App Service.

  3. Den nya Bicep-modulen skapar en App Service för mallen, men du måste fortfarande uppdatera main.bicep för att använda den. infra Leta upp mappen i redigeringsprogrammet och öppna main.bicep filen.

    Filen main.bicep som genereras av startmallen innehåller användbara konfigurationer för dig. Filen definierar till exempel viktiga parametrar som environmentName och location. Som standard fylls dessa parametrar från main.parameters.json om de ingår i filen, men du kan också åsidosätta dem. Startkoden läses också in i filen så att den abbreviations.json är tillgänglig att arbeta med, skapar några användbara taggar och token för tjänstnamngivning och innehåller användbara kommentarer med tips som hjälper dig att komma igång.

  4. Leta upp kommentaren längst ned i main.bicep filen som liknar följande:

    // 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
    

    Den här platshållarkommentaren visar var du vill inkludera ytterligare resurser som du vill etablera. Vi vill inkludera Bicep-modulen som du skapar för App Service, så klistra in följande kodfragment direkt efter kommentaren:

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

    Kodfragmentet utför följande uppgifter:

    • Definierar en Bicep-modul som pekar på filen som du skapade i föregående steg.
    • Tilldelar ett namn till Azure-distributionsuppsättningen och omfång för den resursgrupp som skapades i main.bicep.
    • Skickar parametrar till modulen med hjälp av abbreviations.json värdena för att hjälpa till med namngivning.

Infrastrukturfilerna för appens källkod ingår nu i mallen. I nästa lektion lägger du till konfigurationer som beskriver relationen mellan dessa delar för azd distributionsprocessen.