func createVirtualMachine( group resources.ResourceGroup, vmName, adminName, adminPassword string, availSet compute.AvailabilitySet, networkInterface network.Interface, arm arm.Client) error { vmc := arm.VirtualMachines() netRefs := make([]compute.NetworkInterfaceReference, 1, 1) netRefs[0] = compute.NetworkInterfaceReference{ID: networkInterface.ID} groupName := *group.Name accountName := groupName vmParams := compute.VirtualMachine{ Location: group.Location, Properties: &compute.VirtualMachineProperties{ AvailabilitySet: &compute.SubResource{ID: availSet.ID}, HardwareProfile: &compute.HardwareProfile{VMSize: compute.StandardA0}, NetworkProfile: &compute.NetworkProfile{NetworkInterfaces: &netRefs}, StorageProfile: &compute.StorageProfile{ ImageReference: &compute.ImageReference{ Publisher: to.StringPtr("MicrosoftWindowsServer"), Offer: to.StringPtr("WindowsServer"), Sku: to.StringPtr("2012-R2-Datacenter"), Version: to.StringPtr("latest"), }, OsDisk: &compute.OSDisk{ Name: to.StringPtr("mytestod1"), CreateOption: compute.FromImage, Vhd: &compute.VirtualHardDisk{ URI: to.StringPtr("http://" + accountName + ".blob.core.windows.net/vhds/mytestod1.vhd"), }, }, }, OsProfile: &compute.OSProfile{ AdminUsername: to.StringPtr(adminName), AdminPassword: to.StringPtr(adminPassword), ComputerName: to.StringPtr(vmName), WindowsConfiguration: &compute.WindowsConfiguration{ProvisionVMAgent: to.BoolPtr(true)}, }, }, } if _, err := vmc.CreateOrUpdate(groupName, vmName, vmParams); err != nil { return fmt.Errorf("Failed to create virtual machine '%s' in location '%s': '%s'\n", vmName, *group.Location, err.Error()) } return nil }