Creare l'infrastruttura come codice
L'interfaccia della riga di comando per sviluppatori di Azure (azd
) può effettuare il provisioning delle risorse in Azure usando i file di infrastruttura come codice (IaC) scritti in Bicep o Terraform. L'infrastruttura come codice consente di definire le risorse e le configurazioni dell'infrastruttura nei file di definizione dichiarativa che generano in modo affidabile gli stessi ambienti ogni volta che vengono distribuiti. azd
esegue questi file per creare le risorse di Azure necessarie per ospitare l'app. Per altre informazioni sull'infrastruttura come codice, vedere la documentazione Che cos'è l'infrastruttura come codice?.
In questa unità si aggiungerà il codice Bicep al modello per effettuare il provisioning delle risorse necessarie per l'app. La conoscenza precedente di Bicep non è necessaria per completare questo modulo. Tuttavia, se si prevede di lavorare con modelli azd
in modo esteso, è consigliabile acquisire familiarità con almeno le nozioni di base di Bicep o Terraform. Altre informazioni su Bicep sono disponibili nel percorso di training Concetti fondamentali di Bicep.
I file Bicep o Terraform per il modello si trovano nella cartella infra
. Il modello di avvio Bicep selezionato ha generato tre file come punto di partenza:
main.bicep
- Funge da punto di ingresso principale per l'esecuzione di Bicep e viene usato per definire le risorse di cui verrà effettuato il provisioning in Azure. Il filemain.bicep
può anche fare riferimento ad altri moduli Bicep (file) che consentono di estrarre definizioni di risorse in file più granulari e riutilizzabili.abbreviations.json
- Un file JSON che fornisce molte abbreviazioni di denominazione utili. Questo file viene caricato nel filemain.bicep
durante l'esecuzione e fornisce un set di prefissi di denominazione logici coerenti per diverse risorse di Azure.main.parameters.json
- Un file JSON che definisce i valori predefiniti per parametri di modello importanti, ad esempio il percorso di Azure predefinito o il nome dell'ambiente.
È possibile definire ed effettuare il provisioning delle risorse di Azure necessarie per l'app aggiornando il file main.bicep
e creando altri file Bicep. Main.bicep
in genere orchestra l'esecuzione di altri moduli Bicep passando parametri tra di essi. Per questo esempio si creerà un modulo Bicep aggiuntivo per definire il servizio app di Azure che ospiterà l'applicazione.
All'interno della cartella
infra
del modello creare un nuovo file denominatoapp.bicep
.Aprire il file
app.bicep
e incollarvi il codice seguente: I commenti di codice descrivono lo scopo di ogni sezione del codice.// 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' } }
Il frammento di codice esegue le attività seguenti:
- Definisce un set di parametri che possono essere passati al modulo per renderlo riutilizzabile e configurabile. È possibile scegliere di parametrizzare più valori nelle definizioni delle risorse per rendere il modulo più flessibile.
- Definisce un piano di servizio app per gestire le risorse di calcolo per le istanze del servizio app.
- Definisce il servizio app per ospitare l'applicazione distribuita.
Nota
Un tag
azd-service-name
è incluso nella definizione Bicep del servizio app che verrà usata in un secondo momento dal fileAzure.yaml
di configurazione per associare la cartella del codice sorgente dell'app al servizio app.Il nuovo modulo Bicep creerà un servizio app per il modello, ma è comunque necessario aggiornare
main.bicep
per usarlo. Individuare la cartellainfra
all'interno dell'editor e aprire il filemain.bicep
.Il file
main.bicep
generato dal modello di avvio include configurazioni utili per la configurazione. Ad esempio, il file definisce parametri essenziali, ad esempioenvironmentName
elocation
. Per impostazione predefinita, questi parametri verranno popolati damain.parameters.json
se sono inclusi in tale file, ma è anche possibile eseguirne l'override. Il codice di avvio carica anche nel fileabbreviations.json
in modo che sia disponibile per l'uso, crea alcuni tag e token utili per la denominazione dei servizi e include commenti utili con suggerimenti per iniziare.Nella parte inferiore del file
main.bicep
individuare il commento simile al seguente:// 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
Questo commento segnaposto evidenzia dove includere eventuali risorse aggiuntive di cui si vuole effettuare il provisioning. Si vuole includere il modulo Bicep creato per il servizio app, quindi incollare il frammento di codice seguente direttamente dopo il commento:
module web 'app.bicep' = { name: '${deployment().name}-app' scope: rg params: { location: location appServiceName: '${abbrs.webSitesAppService}${resourceToken}' appServicePlanName: '${abbrs.webServerFarms}${resourceToken}' } }
Il frammento di codice esegue le attività seguenti:
- Definisce un modulo Bicep che punta al file creato nel passaggio precedente.
- Assegna un nome al set di distribuzione di Azure e lo definisce come ambito al gruppo di risorse creato in
main.bicep
. - Passa i parametri nel modulo usando i valori
abbreviations.json
per facilitare la denominazione.
I file di infrastruttura per il codice sorgente dell'app fanno ora parte del modello. Nell'unità successiva verranno aggiunte configurazioni che descrivono la relazione tra questi componenti per il azd
processo di distribuzione.