Infra-as-code (IaC) is het beheren van Cloud infrastructuur door middel van code. Denk hierbij aan virtuele machines, netwerken, databases en andere resources. IaC werkt op basis van configuratiebeheer in tekstbestanden. Om het aanmaken en beheren van deze bestanden te vereenvoudigen kan er gebruik worden gemaakt van o.a. Azure Bicep.
Azure Bicep is een domein specifieke taal voor het declaratief implementeren van Azure resources in de vorm van Azure Resource Manager (ARM) templates. Bicep biedt programmeermogelijkheden voor infra-as-code oplossingen in Azure.
Hieronder worden een aantal functionaliteiten van Azure Bicep uitgelicht.
Modules
Bicep ondersteunt het gebruik van modules die in het hoofdbestand kunnen worden geïntegreerd. Dit stelt ons in staat om herbruikbare, resource specifieke modules te ontwikkelen. Hierdoor wordt tevens de leesbaarheid van de Bicep oplossing verbeterd. Bicep ondersteunt ook ‘conditional’ en ‘multiple instance’ module implementaties.
Afhankelijkheden
Tijdens de implementatie kunnen sommige resources afhankelijkheden hebben met andere resources. Bicep ondersteunt twee soorten afhankelijkheden.
- Expliciet: middels de eigenschap ‘dependsOn’ kunnen we de afhankelijkheden zelf specificeren.
- Impliciet: Bicep analyseert de referenties tussen resources en bepaalt daarbij zelf de volgorde van implementeren.
Vereenvoudigde Syntax
De Bicep syntax is in de meeste gevallen efficiënter dan JSON en Powershell. Dit maakt de syntax makkelijker om te leren, en kan tevens een hoop tijd besparen tijdens het gebruik.
Daarnaast beidt Visual Studio Code een Bicep-extensie die ons voorziet van intellisense.
Veiligheid
Met Bicep kunnen we het krachtige op rollen gebaseerde toegangsbeheer (RBAC) systeem van Azure gebruiken. Roltoewijzingen en roldefinities kunnen programmatisch worden gedefinieerd in een Bicep-bestand.
Parameters
Bicep ondersteunt het gebruik van parameters, die het hergebruik van een Bicep-bestand voor verschillende omgevingen mogelijk maken. De parameterwaarden kunnen tijdens de implementatie worden opgevoerd.
Resource type ondersteuning
Nieuw geïntroduceerde resourcetypes en API-versies zijn direct beschikbaar in Bicep. Dit geldt voor zowel preview- als GA versies (General Availability) van Azure-services.
Naast bovengenoemde functionaliteiten is het tevens mogelijk om Azure Bicep te integreren met Azure DevOps CI/CD pipelines.
Gezien alle functionaliteiten en de korte doorlooptijd waarin infra-as-code oplossingen kunnen worden neergezet, is Azure Bicep een zeer bruikbare tool in de gereedschapskist van Azure ontwikkelaar.