Creating a Windows VM using Terraform
This post is a follow up on the Terraform 101 sessions for the Sunshine Coast dotnet user group. The slides and the code from the session are below. Slides Terraform 101 from Pradeep Loganathan Creating a Windows Virtual Machine provider "azurerm" { version = "=2.8.0" features {} } #create the resource group resource "azurerm_resource_group" "rg" { name = "ateam-resource-group" location = "australiaeast" } #create the virtual network resource "azurerm_virtual_network" "vnet1" { resource_group_name = azurerm_resource_group.rg.name location = "australiaeast" name = "dev" address_space = ["10.0.0.0/16"] } #create a subnet within the virtual network resource "azurerm_subnet" "subnet1" { resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet1.name name = "devsubnet" address_prefixes = ["10.0.0.0/24"] } ##create the network interface for the VM resource "azurerm_public_ip" "pub_ip" { name = "vmpubip" location = "australiaeast" resource_group_name = azurerm_resource_group.rg.name allocation_method = "Dynamic" } resource "azurerm_network_interface" "vmnic" { location = "australiaeast" resource_group_name = azurerm_resource_group.rg.name name = "vmnic1" ip_configuration { name = "vmnic1-ipconf" subnet_id = azurerm_subnet.subnet1.id private_ip_address_allocation = "Dynamic" public_ip_address_id = azurerm_public_ip.pub_ip.id } } ##end creating network interface for the VM ##create the actual VM resource "azurerm_windows_virtual_machine" "devvm" { name = "development-vm" location = "australiaeast" size = "Standard_A1_v2" admin_username = "pradeep" admin_password = "kq7UciQluJt%3dtj" resource_group_name = azurerm_resource_group.rg.name network_interface_ids = [azurerm_network_interface.vmnic.id] os_disk { caching = "ReadWrite" storage_account_type = "Standard_LRS" } source_image_reference { publisher = "MicrosoftWindowsServer" offer = "WindowsServer" sku = "2016-Datacenter" version = "latest" } } ##end creating VM The above code is not at all production ready and was used as part of a live coding exercise to use Terraform to create a Windows VM. The above code creates the VM password as plain text which is not ideal. The password can be generated and printed as an output if necessary. ...