Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você usará o Terraform para criar um aplicativo de funções em um plano de Consumo Flex no Azure Functions, juntamente com outros recursos necessários do Azure. O plano de Consumo Flex fornece hospedagem sem servidor que permite executar seu código sob demanda sem provisionar ou gerenciar explicitamente a infraestrutura. O aplicativo de funções é executado no Linux e está configurado para usar o Armazenamento de Blobs do Azure para implantações de código.
O Terraform permite a definição, a visualização e a implantação da infraestrutura de nuvem. Usando o Terraform, você cria arquivos de configuração usando sintaxe de HCL. A sintaxe da HCL permite que você especifique o provedor de nuvem, como o Azure, e os elementos que compõem sua infraestrutura de nuvem. Depois de criar os arquivos de configuração, você cria um plano de execução que permite visualizar as alterações de infraestrutura antes de serem implantadas. Depois de verificar as alterações, aplique o plano de execução para implantar a infraestrutura.
- Crie um grupo de recursos do Azure com um nome exclusivo.
- Gere uma cadeia de caracteres aleatória de 13 letras minúsculas para nomear recursos.
- Criar uma conta de armazenamento no Azure.
- Crie um contêiner de armazenamento de blobs na conta de armazenamento.
- Crie um plano de consumo flex no Azure Functions.
- Crie um aplicativo de funções com um plano de consumo flex no Azure.
- Exiba os nomes do grupo de recursos, da conta de armazenamento, do plano de serviço, do app de função e do plano de consumo Flex do Azure Functions.
Prerequisites
- Criar uma conta do Azure com uma assinatura ativa. Você pode criar uma conta gratuitamente.
- Instale e configure o Terraform.
- Instale a CLI do Azure para obter a ID da assinatura ou executar no Azure Cloud Shell.
Implementar o código do Terraform
O código de exemplo deste artigo está localizado no repositório do GitHub do Azure Terraform. Você pode exibir o arquivo de log que contém os resultados do teste das versões atuais e anteriores do Terraform. Veja mais artigos e exemplos de código mostrando como usar o Terraform para gerenciar recursos do Azure.
Crie um diretório no qual testar e executar o código de exemplo do Terraform e faça dele o diretório atual.
Crie um arquivo chamado
main.tf, depois insira o código a seguir:# 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 { } }Crie um arquivo chamado
outputs.tf, depois insira o código a seguir: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" }Crie um arquivo chamado
providers.tf, depois insira o código a seguir:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>4.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Crie um arquivo chamado
variables.tf, depois insira o código a seguir: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 }Use este comando da CLI do Azure para definir a
ARM_SUBSCRIPTION_IDvariável de ambiente para a ID da sua assinatura atual:export ARM_SUBSCRIPTION_ID=$(az account show --query "id" --output tsv)Você deve ter essa variável definida para que o Terraform possa se autenticar em sua assinatura do Azure.
Inicializar Terraform
Execute terraform init para inicializar a implantação do Terraform. Esse comando baixa o provedor do Azure necessário para gerenciar seus recursos do Azure.
terraform init -upgrade
Pontos principais:
- O parâmetro
-upgradeatualiza os plug-ins do provedor necessários para a versão mais recente que esteja em conformidade com as restrições de versão da configuração.
Criar um plano de execução Terraform
Execute o comando terraform plan para criar um plano de execução.
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"
Verifique se runtime_version corresponde à versão da pilha de linguagem verificada localmente. Selecione sua pilha de idiomas preferencial na parte superior do artigo.
Pontos principais:
- O comando
terraform plancria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer qualquer alteração nos recursos reais. - O parâmetro opcional
-outpermite que você especifique um arquivo de saída para o plano. Usar o parâmetro-outgarante que o plano que você examinou seja exatamente o que é aplicado.
Aplicar um plano de execução do Terraform
Execute o comando terraform apply para aplicar o plano de execução à sua infraestrutura de nuvem.
terraform apply main.tfplan
Pontos principais:
- O exemplo de comando do
terraform applypressupõe que você executou oterraform plan -out main.tfplananteriormente. - Se você especificou um nome de arquivo diferente para o parâmetro
-out, use esse mesmo nome de arquivo na chamada paraterraform apply. - Se você não usou o parâmetro
-out, chameterraform applysem nenhum parâmetro.
Verifique os resultados
O outputs.tf arquivo retorna esses valores para seu novo aplicativo de funções:
| Value | Description |
|---|---|
resource_group_name |
O nome do grupo de recursos que você criou. |
sa_name |
O nome da conta de armazenamento do Azure exigida pelo host do Functions. |
asp_name |
O nome do plano de Consumo Flex que hospeda seu novo aplicativo. |
fa_name |
O nome do novo aplicativo de funções. |
fa_url |
A URL do ponto de extremidade do seu novo aplicativo de funções. |
Abra um navegador e navegue até o local da URL em fa_url. Você também pode usar o comando de saída terraform para examinar esses valores posteriormente.
Limpar os recursos
Quando você não precisar mais dos recursos criados por meio o Terraform, execute as seguintes etapas:
Execute o comando terraform plan e especifique a flag
destroy.terraform plan -destroy -out main.destroy.tfplanPontos principais:
- O comando
terraform plancria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer qualquer alteração nos recursos reais. - O parâmetro opcional
-outpermite que você especifique um arquivo de saída para o plano. Usar o parâmetro-outgarante que o plano que você examinou seja exatamente o que é aplicado.
- O comando
Execute o comando terraform apply para aplicar o plano de execução.
terraform apply main.destroy.tfplan
Solucionar problemas do Terraform no Azure
Solucionar problemas comuns ao usar o Terraform no Azure.
Próximas etapas
Agora você pode implantar um projeto de código nos recursos do aplicativo de funções criados no Azure.
Você pode criar, verificar e implantar um projeto de código em seu novo aplicativo de funções a partir desses ambientes locais: