Tworzenie infrastruktury jako kodu

Ukończone

Interfejs wiersza polecenia dla deweloperów platformy Azure (azd) może aprowizować zasoby na platformie Azure przy użyciu plików infrastruktury jako kodu (IaC) napisanych w pliku Bicep lub Terraform. Infrastruktura jako kod umożliwia definiowanie zasobów infrastruktury i konfiguracji w plikach definicji deklaratywnych, które niezawodnie generują te same środowiska za każdym razem, gdy są wdrażane. azd Wykonuje te pliki w celu utworzenia zasobów platformy Azure wymaganych do hostowania aplikacji. Więcej informacji na temat infrastruktury jako kodu można uzyskać w dokumentacji Co to jest infrastruktura jako kod?

W tej lekcji dodasz kod Bicep do szablonu, aby aprowizować niezbędne zasoby dla aplikacji. Poprzednia wiedza na temat Bicep nie jest wymagana do ukończenia tego modułu. Jeśli jednak planujesz pracę z szablonami w szerokim zakresie, warto zapoznać się z przynajmniej podstawowymi elementami azd Bicep lub Terraform. Dowiedz się więcej o Bicep na ścieżce szkoleniowej Podstawy Bicep .

Pliki Bicep lub Terraform dla szablonu działają w folderze infra . Wybrany szablon startowy Bicep wygenerował trzy pliki jako punkt początkowy:

  • main.bicep — Działa jako główny punkt wejścia do wykonywania Bicep i służy do definiowania zasobów, które zostaną aprowidowane na platformie Azure. Plik main.bicep może również odwoływać się do innych modułów (plików), które umożliwiają wyodrębnianie definicji zasobów do bardziej szczegółowych plików wielokrotnego użytku.
  • abbreviations.json - Plik JSON, który zawiera wiele przydatnych skrótów nazewnictwa. Ten plik jest ładowany do main.bicep pliku podczas wykonywania i udostępnia zestaw spójnych, logicznych prefiksów nazewnictwa dla różnych zasobów platformy Azure.
  • main.parameters.json — Plik JSON, który definiuje wartości domyślne dla ważnych parametrów szablonu, takich jak domyślna lokalizacja platformy Azure lub nazwa środowiska.

Możesz zdefiniować i aprowizować wymagane zasoby platformy Azure dla aplikacji, aktualizując main.bicep plik i tworząc więcej plików Bicep. Main.bicep zazwyczaj organizuje wykonywanie innych modułów Bicep przez przekazanie parametrów między nimi. W tym przykładzie utworzysz dodatkowy moduł Bicep w celu zdefiniowania usługi aplikacja systemu Azure, która będzie hostować aplikację.

  1. infra Wewnątrz folderu szablonu utwórz nowy plik o nazwie app.bicep.

  2. app.bicep Otwórz plik i wklej następujący fragment kodu. Komentarze kodu opisują przeznaczenie każdej sekcji kodu.

    // 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 kodu wykonuje następujące zadania:

    • Definiuje zestaw parametrów, które można przekazać do modułu, aby można było go ponownie używać i konfigurować. Możesz wybrać parametryzacja większej liczby wartości w definicjach zasobów, aby zwiększyć elastyczność modułu.
    • Definiuje plan usługi App Service do zarządzania zasobami obliczeniowymi dla wystąpień usługi App Service.
    • Definiuje usługę App Service do hostowania wdrożonej aplikacji.

    Uwaga

    azd-service-name Tag jest zawarty w definicji Bicep usługi App Service, która będzie używana później przez Azure.yaml plik konfiguracji do skojarzenia z Tobą folderu kodu źródłowego aplikacji z usługą App Service.

  3. Nowy moduł Bicep utworzy usługę App Service dla szablonu, ale nadal musisz zaktualizować main.bicep go, aby go używać. infra Znajdź folder w edytorze i otwórz main.bicep plik.

    Plik main.bicep wygenerowany przez szablon startowy zawiera przydatne konfiguracje konfiguracji. Na przykład plik definiuje podstawowe parametry, takie jak environmentName i location. Domyślnie te parametry zostaną wypełnione, main.parameters.json jeśli zostaną uwzględnione w tym pliku, ale można je również zastąpić. Kod początkowy ładuje się również w abbreviations.json pliku, aby był dostępny do pracy, tworzy kilka przydatnych tagów i tokenów na potrzeby nazewnictwa usług oraz zawiera przydatne komentarze z poradami, które pomogą Ci rozpocząć pracę.

  4. W dolnej części main.bicep pliku znajdź komentarz podobny do następującego:

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

    Ten komentarz zastępczy wyróżnia miejsce, w którym należy uwzględnić wszelkie dodatkowe zasoby, które chcesz aprowizować. Chcemy dołączyć utworzony moduł Bicep dla usługi App Service, dlatego wklej następujący fragment kodu bezpośrednio po komentarzu:

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

    Fragment kodu wykonuje następujące zadania:

    • Definiuje moduł Bicep wskazujący plik utworzony w poprzednim kroku.
    • Przypisuje nazwę do zestawu wdrożeń platformy Azure i zakresy do grupy zasobów utworzonej w main.bicepprogramie .
    • Przekazuje parametry do modułu abbreviations.json przy użyciu wartości, aby pomóc w nazewnictwie.

Pliki infrastruktury kodu źródłowego aplikacji są teraz częścią szablonu. W następnej lekcji dodasz konfiguracje opisujące relację między tymi elementami procesu azd wdrażania.