Vytvoření infrastruktury jako kódu

Dokončeno

Azure Developer CLI (azd) může zřídit prostředky v Azure pomocí souborů infrastruktury jako kódu (IaC) napsaných v Bicep nebo Terraformu. Infrastruktura jako kód umožňuje definovat prostředky a konfigurace infrastruktury v deklarativních definičních souborech, které spolehlivě generují stejná prostředí při každém nasazení. azd tyto soubory spustí, aby se vytvořily prostředky Azure potřebné k hostování vaší aplikace. Další informace o infrastruktuře jako kódu najdete v dokumentaci k infrastruktuře jako kódu?

V této lekci přidáte do šablony kód Bicep, který zřídí potřebné prostředky pro vaši aplikaci. Předchozí znalost Bicep není nutná k dokončení tohoto modulu. Pokud ale plánujete pracovat s šablonami azd , je vhodné se seznámit alespoň se základy Bicepu nebo Terraformu. Přečtěte si další informace o nástroji Bicep o studijním programu Základy Bicep .

Soubory Bicep nebo Terraform pro vaši šablonu jsou ve infra složce živé. Úvodní šablona Bicep, kterou jste vybrali, vygenerovala jako výchozí bod tři soubory:

  • main.bicep – Slouží jako hlavní vstupní bod pro provádění Bicep a slouží k definování prostředků, které se zřídí v Azure. Soubor main.bicep může také odkazovat na další moduly Bicep (soubory), které umožňují extrahovat definice prostředků do podrobnějších opakovaně použitelných souborů.
  • abbreviations.json – Soubor JSON, který poskytuje mnoho užitečných zkratek pojmenování. Tento soubor se načte do main.bicep souboru během provádění a poskytuje sadu konzistentních logických předpon pojmenování pro různé prostředky Azure.
  • main.parameters.json – Soubor JSON, který definuje výchozí hodnoty pro důležité parametry šablony, jako je výchozí umístění Azure nebo název prostředí.

Požadované prostředky Azure pro vaši aplikaci můžete definovat a zřídit tak, že soubor aktualizujete main.bicep a vytvoříte další soubory Bicep. Main.bicep obecně orchestruje provádění dalších modulů Bicep předáním parametrů mezi nimi. V tomto příkladu vytvoříte další modul Bicep, který definuje službu Aplikace Azure, která bude hostovat vaši aplikaci.

  1. infra Uvnitř složky šablony vytvořte nový soubor s názvem app.bicep.

  2. app.bicep Otevřete soubor a vložte následující fragment kódu. Komentáře ke kódu popisují účel každé části kódu.

    // 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' }
    }
    

    Fragment kódu provádí následující úlohy:

    • Definuje sadu parametrů, které je možné předat do modulu, aby bylo možné ho opakovaně používat a konfigurovat. Můžete se rozhodnout parametrizovat více hodnot v definicích prostředků, aby byl modul flexibilnější.
    • Definuje plán služby App Service pro správu výpočetních prostředků pro instance služby App Service.
    • Definuje službu App Service pro hostování nasazené aplikace.

    Poznámka:

    azd-service-name Značka je součástí definice App Service Bicep, kterou později Azure.yaml použije konfigurační soubor k přidružení složky zdrojového kódu aplikace ke službě App Service.

  3. Nový modul Bicep vytvoří pro vaši šablonu službu App Service, ale přesto je potřeba aktualizovat ji main.bicep tak, aby ji používala. infra Vyhledejte složku v editoru main.bicep a otevřete soubor.

    Soubor main.bicep vygenerovaný úvodní šablonou obsahuje užitečné konfigurace nastavení za vás. Například soubor definuje základní parametry, například environmentName a location. Ve výchozím nastavení se tyto parametry vyplní, main.parameters.json pokud jsou součástí tohoto souboru, ale můžete je také přepsat. Počáteční kód se také načte do abbreviations.json souboru, aby s ním bylo možné pracovat, vytvořil některé užitečné značky a tokeny pro pojmenování služeb a obsahuje užitečné komentáře s tipy, které vám pomůžou začít.

  4. V dolní části main.bicep souboru vyhledejte komentář podobný následujícímu:

    // 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
    

    Tento zástupný komentář zvýrazňuje, kde zahrnout další prostředky, které chcete zřídit. Chceme zahrnout modul Bicep, který vytvoříte pro službu App Service, takže vložte následující fragment kódu přímo za komentář:

    module web 'app.bicep' = {
      name: '${deployment().name}-app'
      scope: rg
      params: {
        location: location
        appServiceName: '${abbrs.webSitesAppService}${resourceToken}'
        appServicePlanName: '${abbrs.webServerFarms}${resourceToken}'
      }
    }
    

    Fragment kódu provádí následující úlohy:

    • Definuje modul Bicep, který odkazuje na soubor, který jste vytvořili v předchozím kroku.
    • Přiřadí název sadě nasazení Azure a jeho rozsahy skupině prostředků vytvořené v main.bicep.
    • Předává parametry do modulu pomocí abbreviations.json hodnot, které vám pomůžou s pojmenováním.

Soubory infrastruktury zdrojového kódu aplikace jsou teď součástí vaší šablony. V další lekci přidáte konfigurace, které popisují vztah mezi těmito částmi procesu azd nasazení.