Creating Azure Resources with Terraform
2 min readApr 28, 2023
An example of creating various Azure resources with Terraform.
# Configure the Azure provider
provider "azurerm" {
features {}
}
# Create a resource group
resource "azurerm_resource_group" "example" {
name = "example-resource-group"
location = "West Europe"
}
# Create a storage account
resource "azurerm_storage_account" "example" {
name = "examplestorageaccount"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
}
# Create a virtual network
resource "azurerm_virtual_network" "example" {
name = "example-virtual-network"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
# Create a subnet
resource "azurerm_subnet" "example" {
name = "example-subnet"
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.1.0/24"]
}
# Create a key vault
resource "azurerm_key_vault" "example" {
name = "example-key-vault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
sku_name = "standard"
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id
key_permissions = [
"get",
"list",
"create",
"delete",
"backup",
"restore"
]
}
}
# Create a SQL Database
resource "azurerm_sql_database" "example" {
name = "example-sql-database"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
server_name = "example-sql-server"
edition = "Standard"
collation = "SQL_Latin1_General_CP1_CI_AS"
sku_name = "Standard"
tags = {
Environment = "dev"
}
}
# Create a SQL Server
resource "azurerm_sql_server" "example" {
name = "example-sql-server"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
version = "12.0"
administrator_login = "exampleadmin"
administrator_login_password = "P@ssw0rd123!"
tags = {
Environment = "dev"
}
}
# Create a virtual machine
resource "azurerm_virtual_machine" "example" {
name = "example-vm"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
network_interface_ids = [azurerm_network_interface.example.id]
vm_size = "Standard_DS1_v2"
storage_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "18.04-LTS"
version = "latest"
}
storage_os_disk {
name = "example-os-disk"
caching = "ReadWrite"
create_option = "