Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym szybkim starcie użyjesz narzędzia Terraform, aby utworzyć aplikację funkcji w ramach planu Flex Consumption w usłudze Azure Functions, wraz z innymi wymaganymi zasobami platformy Azure. Plan Flex Consumption zapewnia hosting bezserwerowy, który umożliwia uruchamianie kodu na żądanie bez jawnego aprowizowania infrastruktury ani zarządzania nią. Aplikacja funkcji działa w systemie Linux i jest skonfigurowana do używania usługi Azure Blob Storage na potrzeby wdrożeń kodu.
Narzędzie Terraform umożliwia definiowanie, wyświetlanie wersji zapoznawczej i wdrażanie infrastruktury chmury. Za pomocą narzędzia Terraform tworzysz pliki konfiguracji przy użyciu składni HCL. Składnia listy HCL umożliwia określenie dostawcy chmury — takiego jak platforma Azure — oraz elementów tworzących infrastrukturę chmury. Po utworzeniu plików konfiguracji utworzysz plan wykonywania , który umożliwia wyświetlenie podglądu zmian infrastruktury przed ich wdrożeniem. Po zweryfikowaniu zmian należy zastosować plan wykonywania w celu wdrożenia infrastruktury.
- Utwórz grupę zasobów platformy Azure o unikatowej nazwie.
- Wygeneruj losowy ciąg 13 małych liter, aby nazwać zasoby.
- Utwórz konto magazynowe na platformie Azure.
- Utwórz kontener magazynu obiektów blob na koncie magazynu.
- Tworzenie planu Flex Consumption w usłudze Azure Functions.
- Utwórz aplikację funkcjonalną z planem Flex Consumption na platformie Azure.
- Wyświetl nazwy grupy zasobów, konta magazynowego, planu usługi, aplikacji funkcji Azure i planu elastycznego zużycia usługi Azure Functions.
Prerequisites
- Utwórz konto platformy Azure z aktywną subskrypcją. Możesz bezpłatnie utworzyć konto.
- Zainstaluj i skonfiguruj rozwiązanie Terraform.
- Zainstaluj interfejs wiersza polecenia platformy Azure, aby uzyskać identyfikator subskrypcji lub uruchom go w Azure Cloud Shell.
Wdrożenie kodu Terraform
Przykładowy kod dla tego artykułu znajduje się w repozytorium Azure Terraform na GitHubie. Możesz wyświetlić plik dziennika zawierający wyniki testu z bieżących i poprzednich wersji programu Terraform. Zobacz więcej artykułów i przykładowego kodu pokazującego, jak zarządzać zasobami platformy Azure przy użyciu narzędzia Terraform.
Utwórz katalog, w którym chcesz przetestować i uruchomić przykładowy kod programu Terraform, i ustaw go jako bieżący katalog.
Utwórz plik o nazwie
main.tfi wstaw następujący kod:# This Terraform configuration creates a Flex Consumption plan app in Azure Functions # with the required Storage account and Blob Storage deployment container. # Create a random pet to generate a unique resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } # Create a resource group resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } # Random String for unique naming of resources resource "random_string" "name" { length = 8 special = false upper = false lower = true numeric = false } # Create a storage account resource "azurerm_storage_account" "example" { name = coalesce(var.sa_name, random_string.name.result) resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = var.sa_account_tier account_replication_type = var.sa_account_replication_type } # Create a storage container resource "azurerm_storage_container" "example" { name = "example-flexcontainer" storage_account_id = azurerm_storage_account.example.id container_access_type = "private" } # Create a Log Analytics workspace for Application Insights resource "azurerm_log_analytics_workspace" "example" { name = coalesce(var.ws_name, random_string.name.result) location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name sku = "PerGB2018" retention_in_days = 30 } # Create an Application Insights instance for monitoring resource "azurerm_application_insights" "example" { name = coalesce(var.ai_name, random_string.name.result) location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name application_type = "web" workspace_id = azurerm_log_analytics_workspace.example.id } # Create a service plan resource "azurerm_service_plan" "example" { name = coalesce(var.asp_name, random_string.name.result) resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location sku_name = "FC1" os_type = "Linux" } # Create a function app resource "azurerm_function_app_flex_consumption" "example" { name = coalesce(var.fa_name, random_string.name.result) resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location service_plan_id = azurerm_service_plan.example.id storage_container_type = "blobContainer" storage_container_endpoint = "${azurerm_storage_account.example.primary_blob_endpoint}${azurerm_storage_container.example.name}" storage_authentication_type = "StorageAccountConnectionString" storage_access_key = azurerm_storage_account.example.primary_access_key runtime_name = var.runtime_name runtime_version = var.runtime_version maximum_instance_count = 50 instance_memory_in_mb = 2048 site_config { } }Utwórz plik o nazwie
outputs.tfi wstaw następujący kod:output "resource_group_name" { value = azurerm_resource_group.example.name } output "sa_name" { value = azurerm_storage_account.example.name } output "asp_name" { value = azurerm_service_plan.example.name } output "fa_name" { value = azurerm_function_app_flex_consumption.example.name } output "fa_url" { value = "https://${azurerm_function_app_flex_consumption.example.name}.azurewebsites.net" }Utwórz plik o nazwie
providers.tfi wstaw następujący kod:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>4.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Utwórz plik o nazwie
variables.tfi wstaw następujący kod:variable "resource_group_name" { type = string default = "" description = "The name of the Azure resource group. If blank, a random name will be generated." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "sa_account_tier" { description = "The tier of the storage account. Possible values are Standard and Premium." type = string default = "Standard" } variable "sa_account_replication_type" { description = "The replication type of the storage account. Possible values are LRS, GRS, RAGRS, and ZRS." type = string default = "LRS" } variable "sa_name" { description = "The name of the storage account. If blank, a random name will be generated." type = string default = "" } variable "ws_name" { description = "The name of the Log Analytics workspace. If blank, a random name will be generated." type = string default = "" } variable "ai_name" { description = "The name of the Application Insights instance. If blank, a random name will be generated." type = string default = "" } variable "asp_name" { description = "The name of the App Service Plan. If blank, a random name will be generated." type = string default = "" } variable "fa_name" { description = "The name of the Function App. If blank, a random name will be generated." type = string default = "" } variable "runtime_name" { description = "The name of the language worker runtime." type = string default = "node" # Allowed: dotnet-isolated, java, node, powershell, python } variable "runtime_version" { description = "The version of the language worker runtime." type = string default = "20" # Supported versions: see https://aka.ms/flexfxversions }Użyj tego polecenia Azure CLI, aby ustawić zmienną
ARM_SUBSCRIPTION_IDśrodowiskową na identyfikator bieżącej subskrypcji.export ARM_SUBSCRIPTION_ID=$(az account show --query "id" --output tsv)Aby można było uwierzytelnić się w ramach subskrypcji platformy Azure, musisz mieć tę zmienną ustawioną dla programu Terraform.
Inicjowanie narzędzia Terraform
Uruchom terraform init, aby zainicjalizować wdrożenie Terraform. Polecenie to pobiera dostawcę Azure wymaganego do zarządzania zasobami Azure.
terraform init -upgrade
Kluczowe punkty:
- Parametr
-upgradeuaktualnia niezbędne wtyczki dostawcy do najnowszej wersji, która jest zgodna z ograniczeniami wersji konfiguracji.
Tworzenie planu wykonania programu Terraform
Uruchom terraform plan, aby utworzyć plan realizacji.
terraform plan -out main.tfplan -var="runtime_name=dotnet-isolated" -var="runtime_version=8"
terraform plan -out main.tfplan -var="runtime_name=powershell" -var="runtime_version=7.4"
terraform plan -out main.tfplan -var="runtime_name=python" -var="runtime_version=3.12"
terraform plan -out main.tfplan -var="runtime_name=java" -var="runtime_version=21"
terraform plan -out main.tfplan -var="runtime_name=node" -var="runtime_version=20"
Upewnij się, że runtime_version jest zgodna z wersją stosu języka zweryfikowaną lokalnie. Wybierz preferowany stos języka w górnej części artykułu.
Kluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego, określa, jakie działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
Zastosuj plan wykonawczy Terraform
Uruchom terraform apply, aby zastosować plan wykonawczy do infrastruktury chmury.
terraform apply main.tfplan
Kluczowe punkty:
- Przykładowe polecenie
terraform applyzakłada, że wcześniej uruchomiono polecenieterraform plan -out main.tfplan. - Jeśli podałeś inną nazwę pliku dla parametru
-out, użyj tej samej nazwy pliku w wywołaniuterraform apply. - Jeśli nie użyłeś parametru
-out, wywołajterraform applybez żadnych parametrów.
Weryfikowanie wyników
Plik outputs.tf zwraca następujące wartości dla nowej aplikacji funkcji:
| Value | Description |
|---|---|
resource_group_name |
Nazwa utworzonej grupy zasobów. |
sa_name |
Nazwa konta usługi Azure Storage wymaganego przez hosta usługi Functions. |
asp_name |
Nazwa planu Flex Consumption, który hostuje nową aplikację. |
fa_name |
Nazwa nowej aplikacji funkcji. |
fa_url |
Adres URL nowego punktu końcowego funkcyjnej aplikacji. |
Otwórz przeglądarkę i przejdź do lokalizacji adresu URL w pliku fa_url. Możesz również użyć polecenia terraform output, aby przejrzeć te wartości w późniejszym czasie.
Uprzątnij zasoby
Jeśli zasoby utworzone za pomocą narzędzia Terraform nie są już potrzebne, wykonaj następujące czynności:
Uruchom terraform plan oraz określ flagę
destroy.terraform plan -destroy -out main.destroy.tfplanKluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego, określa, jakie działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
- Polecenie
Uruchom terraform apply, aby wdrożyć plan realizacji.
terraform apply main.destroy.tfplan
Rozwiązywanie problemów z programem Terraform na platformie Azure
Rozwiązywanie typowych problemów podczas korzystania z programu Terraform na platformie Azure.
Dalsze kroki
Teraz możesz wdrożyć projekt kodu w zasobach aplikacji funkcji utworzonych na platformie Azure.
Możesz utworzyć, zweryfikować i wdrożyć projekt kodu w nowej aplikacji funkcji z następujących środowisk lokalnych:
- wiersza polecenia
- Visual Studio Code
- w programie Visual Studio