Tworzenie infrastruktury jako kodu
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. Plikmain.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 domain.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ę.
infra
Wewnątrz folderu szablonu utwórz nowy plik o nazwieapp.bicep
.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 przezAzure.yaml
plik konfiguracji do skojarzenia z Tobą folderu kodu źródłowego aplikacji z usługą App Service.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órzmain.bicep
plik.Plik
main.bicep
wygenerowany przez szablon startowy zawiera przydatne konfiguracje konfiguracji. Na przykład plik definiuje podstawowe parametry, takie jakenvironmentName
ilocation
. 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ż wabbreviations.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ę.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.bicep
programie . - 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.