As mentioned on my Terraform – First Experience post, I began with a very simple set of resources to stand up a single virtual machine.
The following can be placed into a .TF file, and used right away with “terraform plan” and “terraform apply”. This would be much more useful if every resource wasn’t named “test”, but for the purposes of walking through each resource, understanding the structure of variables and dependency syntax its a good beginning.
provider "azurerm" { subscription_id = "f745d13d" client_id = "7b011238" client_secret = "fhSZ6YN" tenant_id = "461b7ed5" } variable "location" { default = "EastUS" } variable "username" { default = "adminuser" } variable "password" { default = "password" } resource "azurerm_resource_group" "test" { name = "HelloWorld" location = "${var.location}" } resource "azurerm_virtual_network" "test" { name = "test" address_space = ["10.0.0.0/16"] location = "${var.location}" resource_group_name = "${azurerm_resource_group.test.name}" } resource "azurerm_subnet" "test" { name = "test" resource_group_name = "${azurerm_resource_group.test.name}" virtual_network_name = "${azurerm_virtual_network.test.name}" address_prefix = "10.0.2.0/24" } resource "azurerm_network_interface" "test" { name = "test" location = "${var.location}" resource_group_name = "${azurerm_resource_group.test.name}" ip_configuration { name = "testconfiguration1" subnet_id = "${azurerm_subnet.test.id}" private_ip_address_allocation = "dynamic" } } resource "azurerm_storage_account" "test" { name = "helloworlduniquenumbers" resource_group_name = "${azurerm_resource_group.test.name}" location = "${var.location}" account_replication_type = "LRS" account_tier = "Standard" } resource "azurerm_storage_container" "test" { name = "helloworld" resource_group_name = "${azurerm_resource_group.test.name}" storage_account_name = "${azurerm_storage_account.test.name}" container_access_type = "private" } resource "azurerm_virtual_machine" "test" { name = "helloworld" location = "${var.location}" resource_group_name = "${azurerm_resource_group.test.name}" network_interface_ids = ["${azurerm_network_interface.test.id}"] vm_size = "Standard_A1" storage_image_reference { publisher = "MicrosoftWindowsServer" offer = "WindowsServer" sku = "2016-Datacenter" version = "latest" } storage_os_disk { name = "myosdisk1" vhd_uri = "${azurerm_storage_account.test.primary_blob_endpoint}${azurerm_storage_container.test.name}/myosdisk1.vhd" caching = "ReadWrite" create_option = "FromImage" } os_profile { computer_name = "helloworld" admin_username = "${var.username}" admin_password = "${var.password}" } os_profile_windows_config { provision_vm_agent = true enable_automatic_upgrades = true } } |