Lint en valideer uw Bicep-code
Nu u weet wat werkstroomtaken zijn, gaan we kijken naar de eerste set validatiestappen die u kunt toevoegen aan uw Bicep-implementatiewerkstroom. In deze les leert u meer over het valideren van Bicep-sjablonen. U krijgt ook informatie over de twee validatieactiviteiten die vaak worden gebruikt: linting en preflight-validatie.
Wat is een geldig Bicep-bestand?
Een geldig Bicep-bestand bevat geen syntaxisfouten. De definities voor de Azure-resources die u wilt implementeren, zijn ook geldig. En wanneer de resources die in het bestand zijn gedefinieerd, worden geïmplementeerd, blijven ze binnen de quota en limieten die aanwezig zijn in uw Azure-abonnement.
Sommige controles worden geïsoleerd uitgevoerd op uw Bicep-bestand, zoals de controles op syntaxisfouten, voor geldige Azure-resourcedefinities en voor codekwaliteit. Deze stappen maken deel uit van een proces dat linting wordt genoemd. Als u op andere problemen wilt controleren, moet u aanvragen dat de Azure Resource Manager-service uw sjabloon valideert en rekening houdt met uw Azure-omgeving.
Een geldige Bicep-sjabloon heeft een grotere kans op de implementatie. U krijgt feedback zonder uw Bicep-sjabloon daadwerkelijk te implementeren. Validatie is een goede gewoonte omdat als u een Bicep-bestand implementeert dat niet geldig is, Azure slechts een subset van de resources implementeert of wijzigt die in uw sjabloon worden beschreven. Een gedeeltelijke implementatie kan betekenen dat de status van uw omgeving inconsistent is en zich mogelijk niet gedraagt zoals verwacht.
Bicep-code bouwen en linten
Wanneer u een Bicep-bestand implementeert, voert de Bicep-hulpprogramma's eerst enkele basisvalidatiestappen uit. Deze stappen zijn dezelfde stappen die worden uitgevoerd wanneer u het bestand wijzigt met behulp van Visual Studio Code. Ze controleren of u de taaltrefwoorden van Bicep correct hebt gebruikt en of u uw Azure-resources hebt gedefinieerd volgens de vereisten voor elk resourcetype.
Daarnaast voert Bicep een linter uit op uw bestanden. Linting is het proces van het controleren van uw code op basis van een reeks aanbevelingen. De Bicep linter kijkt naar uw bestand en controleert of u de aanbevolen procedures hebt gevolgd voor onderhoud, juistheid, flexibiliteit en uitbreidbaarheid.
Een linter bevat een vooraf gedefinieerde set regels voor elk van deze categorieën. Voorbeelden van linterregels zijn:
- Ongebruikte parameters. De linter scant op parameters die nergens in het Bicep-bestand worden gebruikt. Door ongebruikte parameters te elimineren, kunt u de sjabloon eenvoudiger implementeren omdat u geen onnodige waarden hoeft op te geven. U vermindert ook verwarring wanneer iemand probeert met uw Bicep-bestand te werken.
-
Tekenreeksinterpolatie. De linter controleert of uw bestand gebruikmaakt van de
concat()
functie in plaats van bicep-tekenreeksinterpolatie. Tekenreeksinterpolatie maakt uw Bicep-bestanden beter leesbaar. -
Standaardwaarden voor beveiligde parameters. De linter waarschuwt u als u standaardwaarden instelt voor parameters die zijn gemarkeerd met de
@secure()
decorator. Het instellen van standaardwaarden voor beveiligde parameters is een slechte gewoonte omdat deze de beveiligde parameter een door mensen leesbare waarde geeft en personen deze mogelijk niet wijzigen voordat ze implementeren.
De Bicep linter wordt automatisch uitgevoerd wanneer u de Bicep-tooling gebruikt. Telkens wanneer u een Bicep-bestand maakt, controleert de linter het op basis van de aanbevolen procedures. Deze controle gebeurt automatisch wanneer u een Bicep-bestand implementeert in Azure.
In een werkstroom wilt u echter meestal de validatie- en lintingstappen uitvoeren voordat u het bestand implementeert. U kunt Bicep vertellen uw bestand te verifiëren door het Bicep-bestand handmatig te bouwen via de Bicep CLI:
az bicep build --file main.bicep
bicep build main.bicep
Notitie
Wanneer u de build
opdracht uitvoert, transpileert Bicep uw Bicep-code ook naar een JSON ARM-sjabloon. Over het algemeen hebt u het bestand dat wordt uitgevoerd niet nodig, zodat u het kunt negeren.
Omdat u wilt dat uw Bicep-sjablonen steeds worden uitgeslind wanneer iemand code incheckt in uw opslagplaats, kunt u een linttaak toevoegen aan uw werkstroom:
U drukt deze toevoeging als volgt uit in uw YAML-werkstroombestand:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- script: |
az bicep build --file deploy/main.bicep
Linter-waarschuwingen en -fouten
Standaard verzendt de linter een waarschuwing wanneer wordt gedetecteerd dat een Bicep-bestand een regel schendt. Waarschuwingen die de Bicep linter verzendt, worden niet behandeld als fouten, zodat de werkstroom niet wordt gestopt of dat volgende taken niet meer worden uitgevoerd.
U kunt dit gedrag wijzigen door Bicep te configureren om schendingen van linter-regels te behandelen als fouten in plaats van waarschuwingen. U doet deze configuratie door een bicepconfig.json bestand toe te voegen aan de map die uw Bicep-bestand bevat. U kunt bepalen welke linter-problemen moeten worden behandeld als fouten en welke als waarschuwingen moeten blijven. Verderop in deze module configureert u de linter.
Tip
Het bestand bicepconfig.json bepaalt ook hoe Visual Studio Code fouten en waarschuwingen in de editor weergeeft. Er worden rode en gele golvende lijnen weergegeven onder onjuist geconfigureerde onderdelen in uw Bicep-sjabloon. Deze indicatoren geven u nog sneller feedback wanneer u uw Bicep-code schrijft, waardoor de kans op een fout verder wordt verkleind.
Nadat u de linter opnieuw hebt geconfigureerd om fouten te verzenden, wordt uw werkstroom niet meer uitgevoerd wanneer de linter een probleem detecteert en worden volgende taken niet uitgevoerd. Deze configuratie helpt ervoor te zorgen dat problematische Bicep-code niet wordt geïmplementeerd.
Preflight-validatie
U moet ook controleren of uw Bicep-sjabloon waarschijnlijk in uw Azure-omgeving wordt geïmplementeerd. Dit proces wordt preflight-validatie genoemd en voert controles uit die Azure nodig hebben om informatie op te geven. Dit soort controles zijn onder andere:
- Zijn de namen die u hebt opgegeven voor uw Bicep-resources geldig?
- Zijn de namen die u hebt opgegeven voor uw Bicep-resources al gebruikt?
- Zijn de regio's die u uw resources implementeert in geldige regio's?
Voor de preflight-validatie is communicatie met Azure vereist, maar er worden geen resources geïmplementeerd.
Als u een Bicep-bestand wilt verzenden voor voorbereidende validatie, gebruikt u de actie en stelt u het arm-deploy
deploymentMode
volgende Validate
in:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
name: Run preflight validation
with:
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
deploymentMode: Validate
U kunt ook de opdracht van az deployment group validate
de Azure CLI gebruiken.
Preflight-validatie is vergelijkbaar met een normale implementatie, maar er worden geen resources geïmplementeerd. Er worden extra controles uitgevoerd op basis van de resources die in uw sjabloon worden gebruikt.
Stel dat uw Bicep-bestand een opslagaccount bevat. Tijdens de voorbereidende validatie wordt gecontroleerd of een ander opslagaccount al de naam heeft gebruikt die u hebt gekozen. Ook wordt gecontroleerd of de naam die u voor het opslagaccount hebt gekozen, voldoet aan naamconventies.
Met de preflight-validatieopdracht wordt de Bicep linter ook uitgevoerd. Het is echter meestal een goed idee om de linter afzonderlijk uit te voeren. Als er linterfouten zijn, detecteert u deze snel in plaats van te wachten tot het validatieproces is voltooid. Validatie duurt langer.
Belangrijk
Wanneer u een voorbereidende validatie uitvoert, voert elk van de Azure-resourceproviders zijn eigen controles uit. Sommige resourceproviders voeren niet veel controles uit, terwijl andere wel. U kunt dus niet vertrouwen op preflight-validatie om er zeker van te zijn dat uw bestand geldig is. Toch is het een nuttig hulpmiddel en is het de moeite waard om in uw werkstroom op te slaan.
Door validatietaken toe te voegen aan uw werkstroom om de linter uit te voeren en een voorbereidende validatie uit te voeren, hebt u meer vertrouwen voordat u uw Bicep-bestand implementeert.