8.5 KiB
layout | page_title | sidebar_current | description |
---|---|---|---|
azurerm | Azure Resource Manager: azurerm_virtual_machine | docs-azurerm-resource-virtualmachine | Create a Virtual Machine. |
azurerm_virtual_machine
Create a virtual machine.
Example Usage
resource "azurerm_resource_group" "test" {
name = "acctestrg"
location = "West US"
}
resource "azurerm_virtual_network" "test" {
name = "acctvn"
address_space = ["10.0.0.0/16"]
location = "West US"
resource_group_name = "${azurerm_resource_group.test.name}"
}
resource "azurerm_subnet" "test" {
name = "acctsub"
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 = "acctni"
location = "West US"
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 = "accsa"
resource_group_name = "${azurerm_resource_group.test.name}"
location = "westus"
account_type = "Standard_LRS"
tags {
environment = "staging"
}
}
resource "azurerm_storage_container" "test" {
name = "vhds"
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 = "acctvm"
location = "West US"
resource_group_name = "${azurerm_resource_group.test.name}"
network_interface_ids = ["${azurerm_network_interface.test.id}"]
vm_size = "Standard_A0"
storage_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "14.04.2-LTS"
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 = "hostname"
admin_username = "testadmin"
admin_password = "Password1234!"
}
os_profile_linux_config {
disable_password_authentication = false
}
}
Argument Reference
The following arguments are supported:
name
- (Required) Specifies the name of the virtual machine resource. Changing this forces a new resource to be created.resource_group_name
- (Required) The name of the resource group in which to create the virtual machine.location
- (Required) Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.plan
- (Optional) A plan block as documented below.availability_set_id
- (Optional) The Id of the Availablity Set in which to create the virtual machinevm_size
- (Required) Specifies the size of the virtual machine.storage_image_reference
- (Optional) A Storage Image Reference block as documented below.storage_os_disk
- (Required) A Storage OS Disk block as referenced below.storage_data_disk
- (Optional) A list of Storage Data disk blocks as referenced below.os_profile
- (Required) An OS Profile block as documented below.os_profile_windows_config
- (Required, when a windows machine) A Windows config block as documented below.os_profile_linux_config
- (Required, when a linux machine) A Linux config block as documented below.os_profile_secrets
- (Optional) A collection of Secret blocks as documented below.network_interface_ids
- (Required) Specifies the list of resource IDs for the network interfaces associated with the virtual machine.
For more information on the different example configurations, please check out the azure documentation
Plan
supports the following:
name
- (Required) Specifies the name of the image from the marketplace.publisher
- (Optional) Specifies the publisher of the image.product
- (Optional) Specifies the product of the image from the marketplace.
storage_image_reference
supports the following:
publisher
- (Required) Specifies the publisher of the image used to create the virtual machineoffer
- (Required) Specifies the offer of the image used to create the virtual machine.sku
- (Required) Specifies the SKU of the image used to create the virtual machine.version
- (Optional) Specifies the version of the image used to create the virtual machine.
storage_os_disk
supports the following:
name
- (Required) Specifies the disk name.vhd_uri
- (Required) Specifies the vhd uri.create_option
- (Required) Specifies how the virtual machine should be created. Possible values areattach
andFromImage
.caching
- (Optional) Specifies the caching requirements.
storage_data_disk
supports the following:
name
- (Required) Specifies the name of the data disk.vhd_uri
- (Required) Specifies the uri of the location in storage where the vhd for the virtual machine should be placed.create_option
- (Required) Specifies how the data disk should be created.disk_size_gb
- (Required) Specifies the size of the data disk in gigabytes.lun
- (Required) Specifies the logical unit number of the data disk.
os_profile
supports the following:
computer_name
- (Optional) Specifies the name of the virtual machine.admin_username
- (Required) Specifies the name of the administrator account.admin_password
- (Required) Specifies the password of the administrator account.custom_data
- (Optional) Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes.
~> NOTE: admin_password
must be between 6-72 characters long and must satisfy at least 3 of password complexity requirements from the following:
- Contains an uppercase character
- Contains a lowercase character
- Contains a numeric digit
- Contains a special character
os_profile_windows_config
supports the following:
provision_vm_agent
- (Optional)enable_automatic_upgrades
- (Optional)winrm
- (Optional) A collection of WinRM configuration blocks as documented below.additional_unattend_config
- (Optional) An Additional Unattended Config block as documented below.
winrm
supports the following:
protocol
- (Required) Specifies the protocol of listenercertificate_url
- (Optional) Specifies URL of the certificate with which new Virtual Machines is provisioned.
additional_unattend_config
supports the following:
pass
- (Required) Specifies the name of the pass that the content applies to. The only allowable value isoobeSystem
.component
- (Required) Specifies the name of the component to configure with the added content. The only allowable value isMicrosoft-Windows-Shell-Setup
.setting_name
- (Required) Specifies the name of the setting to which the content applies. Possible values are:FirstLogonCommands
andAutoLogon
.content
- (Optional) Specifies the base-64 encoded XML formatted content that is added to the unattend.xml file for the specified path and component.
os_profile_linux_config
supports the following:
disable_password_authentication
- (Required) Specifies whether password authentication should be disabled.ssh_keys
- (Optional) Specifies a collection ofpath
andkey_data
to be placed on the virtual machine.
~> Note: Please note that the only allowed path
is /home/<username>/.ssh/authorized_keys
due to a limitation of Azure_
os_profile_secrets
supports the following:
source_vault_id
- (Required) Specifies the key vault to use.vault_certificates
- (Required, on windows machines) A collection of Vault Certificates as documented below
vault_certificates
support the following:
certificate_url
- (Required) It is the Base64 encoding of a JSON Object that which is encoded in UTF-8 of which the contents need to bedata
,dataType
andpassword
.certificate_store
- (Required, on windows machines) Specifies the certificate store on the Virtual Machine where the certificate should be added to.
Attributes Reference
The following attributes are exported:
id
- The virtual machine ID.