diff --git a/quickstart/201-web-app-on-docker-container/.terraform-docs.yml b/quickstart/201-web-app-on-docker-container/.terraform-docs.yml new file mode 100644 index 000000000..45efe4754 --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/.terraform-docs.yml @@ -0,0 +1,11 @@ +formatter: "markdown table" + +content: |- + {{ .Resources }} + {{ .Inputs }} + {{ .Providers }} + {{ .Requirements }} + +output: + file: readme.html.markdown + mode: inject \ No newline at end of file diff --git a/quickstart/201-web-app-on-docker-container/.tflint.hcl b/quickstart/201-web-app-on-docker-container/.tflint.hcl new file mode 100644 index 000000000..3e2ee6d62 --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/.tflint.hcl @@ -0,0 +1,71 @@ +/* +THIS FILE IS GENERATED BY TFMOD-SCAFFOLD, PLEASE DO NOT MODIFY IT. +IF YOU WANT TO USE A CUSTOMIZED CONFIGURATION, PLEASE CREATE YOUR OWN AND +SET THIS FILE'S PATH TO $TFLINT_CONFIG ENVVIRONMENT VARIABLE. +*/ + +plugin "azurerm" { + enabled = true + version = "0.18.0" + source = "github.com/terraform-linters/tflint-ruleset-azurerm" +} + +rule "terraform_comment_syntax" { + enabled = true +} + +rule "terraform_deprecated_index" { + enabled = true +} + +rule "terraform_deprecated_interpolation" { + enabled = true +} + +rule "terraform_documented_outputs" { + enabled = true +} + +rule "terraform_documented_variables" { + enabled = true +} + +rule "terraform_module_pinned_source" { + enabled = true +} + +rule "terraform_module_version" { + enabled = true +} + +rule "terraform_naming_convention" { + enabled = true +} + +rule "terraform_required_providers" { + enabled = true +} + +rule "terraform_required_version" { + enabled = true +} + +rule "terraform_standard_module_structure" { + enabled = false +} + +rule "terraform_typed_variables" { + enabled = true +} + +rule "terraform_unused_declarations" { + enabled = true +} + +rule "terraform_unused_required_providers" { + enabled = true +} + +rule "terraform_workspace_remote" { + enabled = true +} \ No newline at end of file diff --git a/quickstart/201-web-app-on-docker-container/main.tf b/quickstart/201-web-app-on-docker-container/main.tf new file mode 100644 index 000000000..875c9a3b7 --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/main.tf @@ -0,0 +1,80 @@ +resource "azurerm_resource_group" "default" { + name = "${var.name_prefix}-rg" + location = var.location +} + +resource "azurerm_user_assigned_identity" "default" { + name = "${var.name_prefix}-uai" + resource_group_name = azurerm_resource_group.default.name + location = azurerm_resource_group.default.location +} + +resource "azurerm_container_registry" "default" { + name = "${var.name_prefix}acr" + resource_group_name = azurerm_resource_group.default.name + location = azurerm_resource_group.default.location + sku = "Premium" + identity { + type = "UserAssigned" + identity_ids = [ + azurerm_user_assigned_identity.default.id + ] + } +} + +resource "azurerm_service_plan" "default_linux" { + name = "${var.name_prefix}-sp-linux" + location = azurerm_resource_group.default.location + resource_group_name = azurerm_resource_group.default.name + sku_name = "P1v3" + os_type = "Linux" +} + +resource "azurerm_service_plan" "default_windows" { + name = "${var.name_prefix}-sp-windows" + location = azurerm_resource_group.default.location + resource_group_name = azurerm_resource_group.default.name + sku_name = "P1v3" + os_type = "Windows" +} + +# when setting docker container for web app, please use app_setting block to specify the container registry information such as URL and credentials, instead of docker_container_registry property in application_stack block. Service will try to locate the docker image based on linuxFxVersion/ windowsFxVersion property and they are composed following the format: DOCKER|containerRegistry/containerName:containerTag in terraform provider. +resource "azurerm_linux_web_app" "default" { + name = "${var.name_prefix}-lwa" + location = azurerm_resource_group.default.location + resource_group_name = azurerm_resource_group.default.name + service_plan_id = azurerm_service_plan.default_linux.id + app_settings = { + "DOCKER_REGISTRY_SERVER_URL" = "https://${azurerm_container_registry.default.name}.azurecr.io" + "DOCKER_REGISTRY_SERVER_USERNAME" = "username" + "DOCKER_REGISTRY_SERVER_PASSWORD" = "password" + "WEBSITES_ENABLE_APP_SERVICE_STORAGE" = "false" + } + site_config { + application_stack { + docker_image = "testimage" + docker_image_tag = "latest" + } + } +} + +resource "azurerm_windows_web_app" "default" { + name = "${var.name_prefix}-wwa" + location = azurerm_resource_group.default.location + resource_group_name = azurerm_resource_group.default.name + service_plan_id = azurerm_service_plan.default_windows.id + app_settings = { + "DOCKER_REGISTRY_SERVER_URL" = "https://index.docker.io" + "DOCKER_REGISTRY_SERVER_USERNAME" = "username" + "DOCKER_REGISTRY_SERVER_PASSWORD" = "password" + "WEBSITES_ENABLE_APP_SERVICE_STORAGE" = "false" + } + site_config { + application_stack { + docker_container_name = "testimage" + docker_container_tag = "latest" + } + } +} + + diff --git a/quickstart/201-web-app-on-docker-container/providers.tf b/quickstart/201-web-app-on-docker-container/providers.tf new file mode 100644 index 000000000..74d8804c1 --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/providers.tf @@ -0,0 +1,13 @@ +terraform { + required_version = ">=1.0" + + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "~>3.8" + } + } +} +provider "azurerm" { + features {} +} \ No newline at end of file diff --git a/quickstart/201-web-app-on-docker-container/readme.html.markdown b/quickstart/201-web-app-on-docker-container/readme.html.markdown new file mode 100644 index 000000000..15184ad4b --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/readme.html.markdown @@ -0,0 +1,46 @@ +# Azure Windows/ Linux Web App running on Docker Container + +This template deploys an Azure Function App running on Docker Container + + + + + + + + + + +## Resources + +| Name | Type | +|--------------------------------------------------------------------------------------------------------------------------------------------------|----------| +| [azurerm_container_registry.default](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/container_registry) | resource | +| [azurerm_linux_web_app.default](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_web_app) | resource | +| [azurerm_resource_group.default](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource | +| [azurerm_service_plan.default_linux](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/service_plan) | resource | +| [azurerm_service_plan.default_windows](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/service_plan) | resource | +| [azurerm_user_assigned_identity.default](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/user_assigned_identity) | resource | +| [azurerm_windows_web_app.default](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/windows_web_app) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|-----------------------------------------------------------------------|---------------------------------------|----------|---------------|:--------:| +| [location](#input\_location) | Location to deploy the resource group | `string` | `"West US 2"` | no | +| [name\_prefix](#input\_name\_prefix) | Prefix of the resource name | `string` | n/a | yes | +## Providers + +| Name | Version | +|---------------------------------------------------------------|---------| +| [azurerm](#provider\_azurerm) | ~>3.8 | +## Requirements + +| Name | Version | +|---------------------------------------------------------------------------|---------| +| [terraform](#requirement\_terraform) | >=1.0 | +| [azurerm](#requirement\_azurerm) | ~>3.8 | + + +## Example + +To see how to run this example, see [Create an Azure Function App using Terraform](https://docs.microsoft.com/azure/developer/terraform/create-azure-windows-linux-web-app-running-on-docker-container). \ No newline at end of file diff --git a/quickstart/201-web-app-on-docker-container/variables.tf b/quickstart/201-web-app-on-docker-container/variables.tf new file mode 100644 index 000000000..e4c010124 --- /dev/null +++ b/quickstart/201-web-app-on-docker-container/variables.tf @@ -0,0 +1,10 @@ +variable "name_prefix" { + type = string + description = "Prefix of the resource name" +} + +variable "location" { + type = string + description = "Location to deploy the resource group" + default = "West US 2" +}