Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Get started with Azure App Service by deploying an app to the cloud via Terraform. When you use a free App Service tier, there's no charge to complete this quickstart.
Terraform allows you to define and create complete infrastructure deployments in Azure. You build Terraform templates in a human-readable format that create and configure Azure resources in a consistent, reproducible manner. This article shows you how to create an app by using Terraform.
Prerequisites
An Azure subscription. If you don't have an Azure subscription, create a free account before you begin.
A Terraform configuration. Use one of the following options:
Azure Terraform Visual Studio Code extension. With this extension, you can work with Terraform from the editor to author, test, and run Terraform configurations. The extension also supports resource graph visualization. To learn how to install the extension, see Install the Azure Terraform Visual Studio Code extension.
Review the template
Choose the following Linux or Windows template to create an App Service plan and App Service app. Linux will create a sample Node.js Hello World
app from the Azure Samples repo. The Windows container template will create a sample ASP.NET app from the Microsoft Container Registry.
# Configure the Azure provider
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0.0"
}
}
required_version = ">= 0.14.9"
}
provider "azurerm" {
features {}
}
# Generate a random integer to create a globally unique name
resource "random_integer" "ri" {
min = 10000
max = 99999
}
# Create the resource group
resource "azurerm_resource_group" "rg" {
name = "myResourceGroup-${random_integer.ri.result}"
location = "eastus"
}
# Create the Linux App Service Plan
resource "azurerm_service_plan" "appserviceplan" {
name = "webapp-asp-${random_integer.ri.result}"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Linux"
sku_name = "B1"
}
# Create the web app, pass in the App Service Plan ID
resource "azurerm_linux_web_app" "webapp" {
name = "webapp-${random_integer.ri.result}"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
depends_on = [azurerm_service_plan.appserviceplan]
https_only = true
site_config {
minimum_tls_version = "1.2"
application_stack {
node_version = "16-lts"
}
}
}
# Deploy code from a public GitHub repo
resource "azurerm_app_service_source_control" "sourcecontrol" {
app_id = azurerm_linux_web_app.webapp.id
repo_url = "https://github.com/Azure-Samples/nodejs-docs-hello-world"
branch = "main"
use_manual_integration = true
use_mercurial = false
}
The template defines the following four Azure resources. For further details and usage information, see the Azure Provider Terraform Registry.
- Microsoft.Resources/resourcegroups: Create a resource group if one doesn't already exist.
- Microsoft.Web/serverfarms: Create an App Service plan.
- Microsoft.Web/sites: Create a Linux App Service app.
- Microsoft.Web/sites/sourcecontrols: Create an external Git deployment configuration.