Terraform – Azure Modules for creating VNET, VM and Application gateway

Posted: March 2, 2020 in terraform

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 and ARM_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

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s