Couple of modules for creating resources in Azure
Prerequisites:
- terraform 12
- Configure terraform for Azure
- Add
ARM_CLIENT_ID,ARM_CLIENT_SECRET,ARM_SUBSCRIPTION_ID
andARM_TENANT_ID
as environmental variables - Download modules

In terraform\modules\vm\example
is main.tf
file for calling all the modules.
Edit this file to satisfy your needs:
#Resource group
module "rg" {
source = "../../../modules/rg"
resource_group_name = var.resource_group_name
resource_group_location = var.resource_group_location
}
module "azure_vnet" {
source = "../../../modules/vnet"
environment_name = var.environment_name
cidr_block = "10.11.96.0/19"
dns_servers = [
"8.8.8.8",
"18.8.4.4",
]
resource_group_name = var.resource_group_name
resource_group_location = var.resource_group_location
enable_wan_subnet = true
enable_dmz_subnet = true
enable_vdi_subnet = false
enable_infrastructure_services_subnet = false
enable_infrastructure_db_services_subnet = false
enable_production_app_services_subnet = false
enable_production_db_services_subnet = false
enable_acceptance_app_services_subnet = false
enable_acceptance_db_services_subnet = false
enable_test_app_services_subnet = false
enable_test_db_services_subnet = false
enable_development_app_services_subnet = false
enable_development_db_services_subnet = false
}
module "application_gateway" {
source = "../../../modules/app_gateway"
resource_group_name = var.resource_group_name
resource_group_location = var.resource_group_location
sku_name = "WAF_Medium"
tier = "WAF"
capacity = 1
subnet_id = module.azure_vnet.subnets_id_dmz
targets = module.azure_vm.azure_vm_nic_id
ip_configuration = module.azure_vm.azure_nic_ip_configuration
# https settings
https = false
}
#module "azure_key_vault" {
#source = "../../../modules/vault"
#environment_name = var.environment_name
#resource_group_name = module.rg.resource_group_name
#resource_group_location = module.rg.resource_group_location
#azure_object_id = var.azure_object_id
#azure_tenant_id = var.azure_tenant_id
#key_vault_name = var.key_vault_name
#network_acl = ["1.2.3.4/32"]
#}
module "azure_vm" {
source = "../../../modules/vm"
environment_name=var.environment_name
#key_vault_url = module.azure_key_vault.key_vault_url
#key_vault_resource_id = module.azure_key_vault.key_vault_resource_id
#key_encryption_key_name = module.azure_key_vault.key_encryption_key_name
#key_encryption_key_version = module.azure_key_vault.key_encryption_key_version
#key_vault_secret_id = module.azure_key_vault.key_vault_secret_id
subnet_id = module.azure_vnet.subnets_id_wan
resource_group_name = module.rg.resource_group_name
resource_group_location=module.rg.resource_group_location
os = "windows"
vm_size = "Standard_B2ms"
vm_image_publisher = "MicrosoftWindowsServer"
vm_image_offer = "WindowsServer"
vm_image_sku = "2016-Datacenter"
vm_name = "myvm2"
vm_admin = "ja"
vm_password = "Passw0rd01234!"
number_of_machines = 1
disk_size = 2
number_of_managed_disks = 0
encryption = false
public_ip = false
}
Read me file is in terraform\modules\app_gateway\README.md
Initialize modules and deploy resources
terraform init
terraform apply