De infrastructuur als code maken

Voltooid

De Azure Developer CLI (azd) kan resources in Azure inrichten met infrastructuur als codebestanden (IaC) die zijn geschreven in Bicep of Terraform. Met infrastructuur als code kunt u infrastructuurresources en configuraties definiëren in declaratieve definitiebestanden die op betrouwbare wijze dezelfde omgevingen genereren wanneer ze worden geïmplementeerd. azd voert deze bestanden uit om de Azure-resources te maken die nodig zijn om uw app te hosten. Meer informatie over infrastructuur als code vindt u in de documentatie wat is infrastructuur als code?

In deze les voegt u Bicep-code toe aan uw sjabloon om de benodigde resources voor uw app in te richten. Eerdere kennis van Bicep is niet vereist om deze module te voltooien. Als u echter van plan bent om uitgebreid met azd sjablonen te werken, is het een goed idee om vertrouwd te raken met ten minste de basisprincipes van Bicep of Terraform. Meer informatie over Bicep over de Fundamentals of Bicep training path.

De Bicep- of Terraform-bestanden voor uw sjabloon bevinden zich in de infra map. De Bicep starter-sjabloon die u hebt geselecteerd, heeft drie bestanden als uitgangspunt gegenereerd:

  • main.bicep - Fungeert als het hoofdinvoerpunt voor bicep-uitvoering en wordt gebruikt om de resources te definiëren die worden ingericht in Azure. Het main.bicep bestand kan ook verwijzen naar andere Bicep-modules (bestanden) waarmee u resourcedefinities kunt extraheren naar gedetailleerdere, herbruikbare bestanden.
  • abbreviations.json - Een JSON-bestand dat veel nuttige afkortingen voor namen biedt. Dit bestand wordt tijdens de uitvoering in het main.bicep bestand geladen en biedt een set consistente, logische naamgevingsvoorvoegsels voor verschillende Azure-resources.
  • main.parameters.json - Een JSON-bestand dat standaardwaarden definieert voor belangrijke sjabloonparameters, zoals de standaardlocatie van Azure of de naam van de omgeving.

U kunt de vereiste Azure-resources voor uw app definiëren en inrichten door het main.bicep bestand bij te werken en meer Bicep-bestanden te maken. Main.bicep in het algemeen wordt de uitvoering van andere Bicep-modules ingedeeld door parameters tussen deze modules door te geven. In dit voorbeeld maakt u een extra Bicep-module om de Azure-app Service te definiëren die als host fungeert voor uw toepassing.

  1. Maak in de map van uw sjabloon een nieuw bestand met de infra naam app.bicep.

  2. Open het app.bicep bestand en plak het volgende codefragment. In de codeopmerkingen wordt het doel van elke sectie met code beschreven.

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

    Met het codefragment worden de volgende taken uitgevoerd:

    • Definieert een set parameters die kunnen worden doorgegeven aan de module om deze herbruikbaar en configureerbaar te maken. U kunt ervoor kiezen om meer waarden in de resourcedefinities te parameteriseren om de module flexibeler te maken.
    • Hiermee definieert u een App Service-plan voor het beheren van de rekenresources voor App Service-exemplaren.
    • Hiermee definieert u de App Service voor het hosten van de geïmplementeerde toepassing.

    Notitie

    Er wordt een azd-service-name tag opgenomen in de App Service Bicep-definitie die later door het Azure.yaml configuratiebestand wordt gebruikt om u te koppelen aan een map van uw app-broncode met de App Service.

  3. De nieuwe Bicep-module maakt een App Service voor uw sjabloon, maar u moet de app nog steeds bijwerken om deze main.bicep te gebruiken. Zoek de infra map in de editor en open het main.bicep bestand.

    Het main.bicep bestand dat door de starterssjabloon wordt gegenereerd, bevat nuttige configuraties voor u. Het bestand definieert bijvoorbeeld essentiële parameters zoals environmentName en location. Deze parameters worden standaard ingevuld main.parameters.json als ze zijn opgenomen in dat bestand, maar u kunt ze ook overschrijven. De starterscode wordt ook geladen in het abbreviations.json bestand, zodat het beschikbaar is om mee te werken, maakt nuttige tags en tokens voor servicenaamgeving en bevat nuttige opmerkingen met tips om u te helpen aan de slag te gaan.

  4. Zoek onderaan het main.bicep bestand de opmerking die er ongeveer als volgt uitziet:

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

    Deze tijdelijke aanduiding markeert waar extra resources moeten worden opgenomen die u wilt inrichten. We willen de Bicep-module die u voor de App Service maakt, opnemen, dus plak het volgende codefragment direct na de opmerking:

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

    Met het codefragment worden de volgende taken uitgevoerd:

    • Definieert een Bicep-module die verwijst naar het bestand dat u in de vorige stap hebt gemaakt.
    • Hiermee wordt een naam toegewezen aan de Azure-implementatieset en wordt deze toegewezen aan de resourcegroep die is gemaakt in main.bicep.
    • Geeft parameters door aan de module met behulp van de abbreviations.json waarden om u te helpen bij het benoemen.

De infrastructuurbestanden voor de broncode van de app maken nu deel uit van uw sjabloon. In de volgende les voegt u configuraties toe die de relatie tussen deze onderdelen voor het azd implementatieproces beschrijven.