explorer
explorer

Reputation: 769

how to use custom_data field of azurerm_virtual_machine resource in terraform?

I am trying to use custom_data field of resource azurerm_virtual_machine, but getting caught up into this error. Any idea what I am missing or is that a wrong usage?

resource "azurerm_virtual_machine" "csrVM" {
  name                  = "csr-terraform-poc"
  location              = "${var.location}"
  resource_group_name   = "${azurerm_resource_group.terraformRG.name}"
  network_interface_ids = ["${azurerm_network_interface.terraformNic1.id}",
                           "${azurerm_network_interface.terraformNic2.id}"]
  primary_network_interface_id = "${azurerm_network_interface.terraformNic1.id}"
  vm_size               = "Standard_DS1_v2"

  custom_data = "${file("customdata.txt")}"
  #custom_data = <<CUSTOMDATA
  #username testuser privilege 15 password testpass
  #enable password testpass
#CUSTOMDATA

~>terraform apply -var-file=azure.tfvars

Error: azurerm_virtual_machine.csrVM: : invalid or unknown key: custom_data

~>terraform -v Terraform v0.11.3 + provider.azurerm v1.1.1

Upvotes: 3

Views: 10777

Answers (1)

4c74356b41
4c74356b41

Reputation: 72151

I've never used terraform, but looking at the resource definition you need to create a os_profile node and place custom_data there.

os_profile supports the following:

computer_name - (Required) Specifies the name of the virtual machine.  
admin_username - (Required) Specifies the name of the administrator account.  
admin_password - (Required for Windows, Optional for Linux) Specifies the password of the administrator account.  
custom_data - (Optional) Specifies custom data to supply to the machine. On linux-based systems, this can be used as a cloud-init script. On other systems, this will be copied as a file on disk. Internally, Terraform will base64 encode this value before sending it to the API. The maximum length of the binary array is 65535 bytes.

Upvotes: 1

Related Questions