Created
January 16, 2019 12:32
-
-
Save justinyoo/56f4078a7ef30efdec3f702b2620aedd to your computer and use it in GitHub Desktop.
Terraforming Azure PaaS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# functionapp.tf | |
# | |
# Configure the Azure Provider | |
provider "azurerm" { | |
version = "=1.20.0" | |
} | |
locals { | |
name = "${var.name}" | |
location = "${var.location}" | |
resource_group = "${var.resource_group}" | |
tags = "${var.tags}" | |
consumption_plan_id = "${var.consumption_plan_id}" | |
web_config = "${var.web_config}" | |
app_settings = "${var.app_settings}" | |
} | |
resource "azurerm_function_app" "fncapp" { | |
# Function app name | |
name = "${local.name}" | |
# Function app location | |
location = "${local.location}" | |
# Resource group name that Function app belongs | |
resource_group_name = "${local.resource_group}" | |
# Resource tags | |
tags = "${local.tags}" | |
# Consumption plan ID | |
app_service_plan_id = "${local.consumption_plan_id}" | |
# Web config | |
https_only = "${local.web_config["https_only"]}" | |
site_config { | |
use_32_bit_worker_process = "${local.web_config["use_32_bit_worker_process"]}" | |
} | |
# App settings | |
storage_connection_string = "${local.app_settings["storage_connection_string"]}" | |
version = "${local.app_settings["functions_extension_version"]}" | |
app_settings { | |
AzureWebJobsSecretStorageType = "${local.app_settings["secret_storage_type"]}" | |
FUNCTION_APP_EDIT_MODE = "${local.app_settings["functions_edit_mode"]}" | |
FUNCTIONS_WORKER_RUNTIME = "${local.app_settings["functions_worker_runtime"]}" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
resource "azurerm_logic_app_trigger_custom" "test" { | |
name = "example-trigger" | |
logic_app_id = "${azurerm_logic_app_workflow.test.id}" | |
# JSON hard-coding required | |
body = <<BODY | |
{ | |
"recurrence": { | |
"frequency": "Day", | |
"interval": 1 | |
}, | |
"type": "Recurrence" | |
} | |
BODY | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# logicapp.tf | |
# | |
# Configure the Azure Provider | |
provider "azurerm" { | |
version = "=1.20.0" | |
} | |
locals { | |
name = "${var.name}" | |
location = "${var.location}" | |
resource_group = "${var.resource_group}" | |
tags = "${var.tags}" | |
} | |
resource "azurerm_logic_app_workflow" "logapp" { | |
# Logic App name | |
name = "${local.name}" | |
# Logic App location | |
location = "${local.location}" | |
# Resource group name that Logic App belongs | |
resource_group_name = "${local.resource_group}" | |
# Resouce tags | |
tags = "${local.tags}" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# orchestrator.tf | |
# | |
# Configure the Azure Provider | |
provider "azurerm" { | |
version = "=1.20.0" | |
} | |
# Initialise external variables | |
variable "resource_name" { | |
type = "string" | |
description = "Resource name" | |
} | |
variable "resource_environment" { | |
type = "string" | |
description = "Resource environment" | |
default = "Development" | |
} | |
variable "resource_environment_code" { | |
type = "string" | |
description = "Resource environment code" | |
default = "dev" | |
} | |
variable "resource_location" { | |
type = "string" | |
description = "Resource location" | |
default = "Australia Southeast" | |
} | |
variable "resource_location_code" { | |
type = "string" | |
description = "Resource location code" | |
default = "ase" | |
} | |
# Initialise local variables | |
locals { | |
resource_long_name = "{0}-${var.resource_name}-${var.resource_environment_code}-${var.resource_location_code}" | |
resource_short_name = "${replace(local.resource_long_name, "-", "")}" | |
location = "${var.resource_location}" | |
tags = { | |
environment = "${var.resource_environment}" | |
} | |
} | |
# Create Resource Group | |
module "resgrp" { | |
source = "./modules/resourcegroup" | |
name = "${replace(local.resource_long_name, "{0}", "resgrp")}" | |
location = "${local.location}" | |
tags = "${local.tags}" | |
} | |
# Create Storage Account | |
module "st" { | |
source = "./modules/storageaccount" | |
name = "${replace(local.resource_short_name, "{0}", "st")}" | |
location = "${local.location}" | |
resource_group = "${module.resgrp.name}" | |
tags = "${local.tags}" | |
} | |
# Create Consumption Plan | |
module "csplan" { | |
source = "./modules/consumptionplan" | |
name = "${replace(local.resource_long_name, "{0}", "csplan")}" | |
location = "${local.location}" | |
resource_group = "${module.resgrp.name}" | |
tags = "${local.tags}" | |
} | |
# Create Function App | |
module "fncapp" { | |
source = "./modules/functionapp" | |
name = "${replace(local.resource_long_name, "{0}", "fncapp")}" | |
location = "${local.location}" | |
resource_group = "${module.resgrp.name}" | |
tags = "${local.tags}" | |
consumption_plan_id = "${module.csplan.id}" | |
web_config = { | |
https_only = "true" | |
use_32_bit_worker_process = "false" | |
} | |
app_settings = { | |
storage_connection_string = "${module.st.connection_string}" | |
secret_storage_type = "Files" | |
functions_extension_version = "~2" | |
functions_edit_mode = "ReadOnly" | |
functions_worker_runtime = "dotnet" | |
} | |
} | |
# Create Logic App | |
module "logapp" { | |
source = "./modules/logicapp" | |
name = "${replace(local.resource_long_name, "{0}", "logapp")}" | |
location = "${local.location}" | |
resource_group = "${module.resgrp.name}" | |
tags = "${local.tags}" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# outputs.tf | |
# | |
# Resource group ID | |
output "id" { | |
value = "${azurerm_resource_group.resgrp.id}" | |
} | |
# Resource Group name | |
output "name" { | |
value = "${azurerm_resource_group.resgrp.name}" | |
} | |
# Resource Group location | |
output "location" { | |
value = "${azurerm_resource_group.resgrp.location}" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# resourcegroup.tf | |
# | |
# Configure the Azure Provider | |
provider "azurerm" { | |
version = "=1.20.0" | |
} | |
locals { | |
name = "${var.name}" | |
location = "${var.location}" | |
tags = "${var.tags}" | |
} | |
resource "azurerm_resource_group" "resgrp" { | |
# Resource group name | |
name = "${local.name}" | |
# Resource group location | |
location = "${local.location}" | |
# Resource group tag | |
tags = "${local.tags}" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# variables.tf | |
# | |
variable "name" { | |
type = "string" | |
description = "Resource group name" | |
} | |
variable "location" { | |
type = "string" | |
description = "Resource group location" | |
default = "Australia Southeast" | |
} | |
variable "tags" { | |
type = "map" | |
description = "Tags for resource group" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment