De infrastructuur als code maken
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. Hetmain.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 hetmain.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.
Maak in de map van uw sjabloon een nieuw bestand met de
infra
naamapp.bicep
.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 hetAzure.yaml
configuratiebestand wordt gebruikt om u te koppelen aan een map van uw app-broncode met de App Service.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 deinfra
map in de editor en open hetmain.bicep
bestand.Het
main.bicep
bestand dat door de starterssjabloon wordt gegenereerd, bevat nuttige configuraties voor u. Het bestand definieert bijvoorbeeld essentiële parameters zoalsenvironmentName
enlocation
. Deze parameters worden standaard ingevuldmain.parameters.json
als ze zijn opgenomen in dat bestand, maar u kunt ze ook overschrijven. De starterscode wordt ook geladen in hetabbreviations.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.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.