Wat is Bicep?

Bicep is een domeinspecifieke taal (DSL) die gebruikmaakt van declaratieve syntaxis om Azure-resources te implementeren. Het biedt beknopte syntaxis, betrouwbare veiligheid van typen en ondersteuning voor hergebruik van code. We zijn van mening dat Bicep de beste ontwerpervaring biedt voor uw infrastructure-as-code-oplossingen in Azure.

U kunt Bicep gebruiken in plaats van JSON om uw Azure Resource Manager -sjablonen (ARM-sjablonen) te ontwikkelen. De JSON-syntaxis voor het maken van een ARM-sjabloon kan uitgebreid zijn en complexe expressies vereisen. Bicep-syntaxis vermindert die complexiteit en verbetert de ontwikkelervaring. Bicep is een transparante abstractie via ARM-sjabloon-JSON en verliest geen van de mogelijkheden van de JSON-sjabloon. Tijdens de implementatie converteert de Bicep CLI een Bicep-bestand naar ARM-sjabloon JSON.

Bicep is niet bedoeld als een algemene programmeertaal voor het schrijven van toepassingen. Een Bicep-bestand declareer Azure-resources en resource-eigenschappen, zonder een reeks programmeeropdrachten te schrijven om resources te maken.

Resourcetypen, API-versies en eigenschappen die geldig zijn in een ARM-sjabloon, zijn geldig in een Bicep-bestand.

Zie de Bicep-projectopslagplaats om de status van het Bicep-werk bij te houden.

Zie de volgende video voor meer informatie over Bicep.

Aan de slag

Om te beginnen met Bicep:

  1. Installeer de hulpprogramma's. Zie Bicep-ontwikkel- en implementatieomgevingen instellen. U kunt ook de VS Code Devcontainer/Codespaces-repo gebruiken om een vooraf geconfigureerde ontwerpomgeving op te halen.
  2. Voltooi de quickstart en de Microsoft Learn Bicep-modules.

Zie ARM-sjabloon-JSON decompileren naar Bicep als u een bestaande ARM-sjabloon wilt decompileren naar Bicep.

Zie Bicep-resourceverwijzing voor meer informatie over de resources die beschikbaar zijn in uw Bicep-bestand

Bicep-voorbeelden vindt u in de Bicep GitHub-repo.

Voordelen van Bicep versus andere hulpprogramma's

Bicep biedt de volgende voordelen ten opzichte van andere opties:

  • Ondersteuning voor alle resourcetypen en API-versies: Bicep ondersteunt onmiddellijk alle preview- en GA-versies voor Azure-services. Zodra een resourceprovider nieuwe resourcetypen en API-versies introduceert, kunt u deze gebruiken in uw Bicep-bestand. U hoeft niet te wachten tot de hulpprogramma's zijn bijgewerkt voordat u de nieuwe services gebruikt.
  • Eenvoudige syntaxis: Vergeleken met de equivalente JSON-sjabloon zijn Bicep-bestanden beknopter en gemakkelijker te lezen. Bicep vereist geen eerdere kennis van programmeertalen. Bicep-syntaxis is declaratief en geeft aan welke resources en resource-eigenschappen u wilt implementeren.
  • Ontwerpervaring: wanneer u VS Code gebruikt om bicep-bestanden te maken, krijgt u een eersteklas ontwerpervaring. De editor biedt uitgebreide type-safety, intellisense en syntaxisvalidatie.
  • Modulariteit: u kunt uw Bicep-code opdelen in beheerbare onderdelen met behulp van modules. Met de module wordt een set gerelateerde resources geïmplementeerd. Met modules kunt u code hergebruiken en de ontwikkeling vereenvoudigen. Voeg de module toe aan een Bicep-bestand wanneer u deze resources wilt implementeren.
  • Integratie met Azure-services: Bicep is geïntegreerd met Azure-services zoals Azure Policy, sjabloonspecificaties en Blauwdrukken.
  • Geen status- of statusbestanden om te beheren: alle statussen worden opgeslagen in Azure. Gebruikers kunnen samenwerken en vertrouwen dat hun updates worden verwerkt zoals verwacht. Gebruik de what-if-bewerking om een voorbeeld van wijzigingen te bekijken voordat u de sjabloon implementeert.
  • Geen kosten en open source: Bicep is volledig gratis. U hoeft niet te betalen voor Premium-mogelijkheden. Het wordt ook ondersteund door Microsoft Ondersteuning.

Bicep-verbeteringen

Bicep biedt een eenvoudigere en beknoptere syntaxis in vergelijking met de equivalente JSON. U gebruikt geen expressies tussen [...] haakjes. In plaats daarvan roept u functies rechtstreeks aan en krijgt u waarden uit parameters en variabelen. U geeft elke geïmplementeerde resource een symbolische naam, zodat u eenvoudig naar die resource in uw sjabloon kunt verwijzen.

De volgende JSON retourneert bijvoorbeeld een uitvoerwaarde van een resource-eigenschap.

"outputs": {
  "hostname": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
    },
}

De equivalente uitvoerexpressie in Bicep is eenvoudiger te schrijven. Het volgende voorbeeld retourneert dezelfde eigenschap met behulp van de symbolische naam publicIP voor een resource die is gedefinieerd in de sjabloon:

output hostname string = publicIP.properties.dnsSettings.fqdn

Zie JSON en Bicep vergelijken voor sjablonen voor een volledige vergelijking van de syntaxis.

Bicep beheert automatisch afhankelijkheden tussen resources. U kunt instelling vermijden dependsOn wanneer de symbolische naam van een resource wordt gebruikt in een andere resourcedeclaratie.

De structuur van het Bicep-bestand is flexibeler dan de JSON-sjabloon. U kunt parameters, variabelen en uitvoer overal in het bestand declareeren. In JSON moet u alle parameters, variabelen en uitvoer declareer in de bijbehorende secties van de sjabloon.

Veelgestelde vragen

Waarom een nieuwe taal maken in plaats van een bestaande taal te gebruiken?

U kunt Bicep zien als een revisie van de bestaande arm-sjabloontaal in plaats van een nieuwe taal. De syntaxis is gewijzigd, maar de kernfunctionaliteit en runtime blijven hetzelfde.

Voordat we Bicep ontwikkelden, hebben we overwogen een bestaande programmeertaal te gebruiken. We hebben besloten dat onze doelgroep het gemakkelijker zou vinden om Bicep te leren in plaats van aan de slag te gaan met een andere taal.

Waarom richt u uw energie niet op Terraform of andere infrastructure as code-aanbiedingen van derden?

Verschillende gebruikers geven de voorkeur aan verschillende configuratietalen en hulpprogramma's. We willen er zeker van zijn dat al deze hulpprogramma's een geweldige ervaring bieden in Azure. Bicep maakt deel uit van die inspanning.

Als u terraform wilt gebruiken, is er geen reden om over te schakelen. Microsoft doet er alles aan om ervoor te zorgen dat Terraform in Azure het beste is.

Voor klanten die ARM-sjablonen hebben geselecteerd, zijn we van mening dat Bicep de ontwerpervaring verbetert. Bicep helpt ook bij de overgang voor klanten die geen infrastructuur als code hebben gebruikt.

Is deze gereed voor productiegebruik?

Ja. Vanaf versie 0.3 wordt Bicep ondersteund door Microsoft-ondersteuningsplannen. Bicep heeft pariteit met wat kan worden bereikt met ARM-sjablonen. Er zijn momenteel geen belangrijke wijzigingen gepland, maar het is mogelijk dat we in de toekomst belangrijke wijzigingen moeten maken.

Is Bicep alleen voor Azure?

Op dit moment zijn we niet van plan om Bicep verder uit te breiden dan Azure. We willen Azure volledig ondersteunen en de implementatie-ervaring optimaliseren.

Om dit doel te bereiken, moet u werken met een aantal API's die zich buiten Azure verplaatsen. We verwachten dat we voor deze scenario's extensibility-punten bieden.

Wat gebeurt er met mijn bestaande ARM-sjablonen?

Ze blijven precies zo werken als altijd. U hoeft geen wijzigingen aan te brengen. We blijven de onderliggende JSON-taal van de ARM-sjabloon ondersteunen. Bicep-bestanden worden ge compileerd naar JSON en die JSON wordt naar Azure verzonden voor implementatie.

Wanneer u klaar bent, kunt u de JSON-bestanden decompileren naar Bicep.

Kan ik Bicep gebruiken om te implementeren in Azure Stack Hub?

Ja, u kunt Bicep gebruiken voor uw Azure Stack Hub-implementaties, maar bicep kan typen laten zien die nog niet beschikbaar zijn in Azure Stack Hub. U kunt een set voorbeelden bekijken in de Azure Stack Hub quickstart-sjabloon GitHub de repo.

Volgende stappen

Ga aan de slag met de snelstart.