Pratiques exemplaires pour Bicep
Azure Bicep est un langage spécifique à un domaine (DSL) pour déployer de manière déclarative des ressources Azure. C’est un langage conçu pour être plus lisible et plus facile à maintenir afin de définir les ressources Azure.
Bicep est livré avec un linter qui détecte différentes erreurs, mais propose également des meilleures pratiques en ligne qui ne sont pas entièrement couvertes par le linter.
Application Web Basique Linux
Section intitulée « Application Web Basique Linux »Le fichier suivant est un fichier Bicep qui déploie une application web avec un plan de service d’application Linux. C’est l’exemple de modèle microsoft.web/webapp-basic-linux/main.bicep dans le bac à sable Bicep.
@description('Base name of the resource such as web app name and app service plan ')@minLength(2)param webAppName string = 'AzureLinuxApp'
@description('The SKU of App Service Plan ')param sku string = 'S1'
@description('The Runtime stack of current web app')param linuxFxVersion string = 'php|7.4'
@description('Location for all resources.')param location string = resourceGroup().location
var webAppPortalName = '${webAppName}-webapp'#disable-next-line genaiscriptvar appServicePlanName = 'AppServicePlan-${webAppName}'
resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: sku } kind: 'linux' properties: { reserved: true }}
resource webAppPortal 'Microsoft.Web/sites@2022-03-01' = { name: webAppPortalName location: location kind: 'app' properties: { serverFarmId: appServicePlan.id siteConfig: { linuxFxVersion: linuxFxVersion ftpsState: 'FtpsOnly' } httpsOnly: true } identity: { type: 'SystemAssigned' }}
Le fichier est conforme au linter
, mais certaines améliorations peuvent être apportées en suivant les meilleures pratiques.
Le script suivant appliquera les meilleures pratiques au fichier Bicep.
script({ title: "Bicep Best Practices", temperature: 0, system: ["system", "system.annotations"], accept: ".bicep",});
def("FILE", env.files, { endsWith: ".bicep" });
$`You are an expert at Azure Bicep.
Review the bicep in FILE and generate errors to enhance the script base on best practices(https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/best-practices).
- Generate the top 3 most important annotations.- Limit range to a single line.- Do NOT generate notes.- If a line starts with "#disable-next-line genaiscript", ignore the next line.`;
- des numéros de ligne sont ajoutés au contenu du fichier pour aider le LLM à localiser précisément les problèmes.
def("FILE", env.files, { endsWith: ".bicep", lineNumbers: true,});
- le script utilise un support intégré pour les annotations pour générer des avertissements et des erreurs analysables. Les annotations sont automatiquement intégrées comme problèmes dans VSCode ou comme erreurs de build dans la chaîne CI/CD.
$`... and generate annotations ...`;
- ajout du support pour ignorer les faux positifs en utilisant le commentaire
#disable-next-line genaiscript
$`- If a line starts with "#disable-next-line genaiscript", ignore the next line.`;
- GPT-4 connaît déjà les meilleures pratiques pour Bicep, il n’est pas nécessaire de les répéter !
Résultats
Section intitulée « Résultats »Le LLM génère 3 annotations pour le fichier Bicep. Les annotations sont affichées sous forme de lignes ondulées dans VSCode.
