provider vsphere 1.0.0 network_interface.0.ipv4_address

1,163 views
Skip to first unread message

Sean Boran

unread,
Dec 8, 2017, 11:01:07 AM12/8/17
to Terraform
Hi,

I'm trying to migrate from the old v0.2 provider for vsphere, but am have issues with the networking.
The error is:

* vsphere_virtual_machine.vm: 1 error(s) occurred:
* Resource 'vsphere_virtual_machine.vm' does not have attribute 'network_interface.0.ipv4_address' for variable 'vsphere_virtual_machine.vm.network_interface.0.ipv4_address'


data "vsphere_network" "network" {
  name          = "${var.network}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
resource "vsphere_virtual_machine" "vm" {
...
network_interface {
    network_id   = "${data.vsphere_network.network.id}"
    adapter_type = "${data.vsphere_virtual_machine.template.network_interface_types[0]}"
  }
  clone {
    template_uuid = "${data.vsphere_virtual_machine.template.id}"
    customize {
      linux_options {
        host_name  = "${var.vmname}"
        domain     = "${var.domain}"
      }
      # have tried this for dhcp:
      network_interface {}
      # and also:
      #network_interface {
      #  ipv4_address = "${var.ipv4_address}"
      #  ipv4_netmask = 24
      #}
      ipv4_gateway   = "${var.ipv4_gateway}"
    }

Any suggestions please?

Jason Azze

unread,
Dec 9, 2017, 8:53:25 AM12/9/17
to Terraform


On Friday, December 8, 2017 at 11:01:07 AM UTC-5, Sean Boran wrote:

I'm trying to migrate from the old v0.2 provider for vsphere, but am have issues with the networking.

Hi, Sean. Updates have been coming in fast for this provider. Version 1.1.0 landed on Friday morning. Maybe give that a shot.

Could you also show your other datasources -- particularly the one for template.

Sean Boran

unread,
Dec 11, 2017, 4:36:05 AM12/11/17
to Terraform
Hi Jason,

Same behaviour with v1.1.0.

The data sources are as follows

data "vsphere_datacenter" "dc" {
  name = "${var.datacenter}"
}
data "vsphere_datastore" "datastore" {
  name          = "${var.datastore}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_resource_pool" "pool" {
  name          = "${var.resource_pool}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"

}
data "vsphere_network" "network" {
  name          = "${var.network}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_virtual_machine" "template" {
  name          = "${var.template}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

Variables
  • var.template is a value like "Templates/Ubuntu16.04-Template"
  • ipv4_address =""  (empty)

The error is:
Resource 'vsphere_virtual_machine.vm' does not have attribute 'network_interface.0.ipv4_address' for variable 'vsphere_virtual_machine.vm.network_interface.0.ipv4_address'

Sean

Sean Boran

unread,
Jan 15, 2018, 8:11:48 AM1/15/18
to Terraform

Hi,

Revisiting this issue with the latest release (provider-vsphere_v1.2), it is still present. The error is:
* Resource 'vsphere_virtual_machine.vm' does not have attribute 'network_interface.0.ipv4_address' for variable 'vsphere_virtual_machine.vm.network_interface.0.ipv4_address'

The TF config + logs are at the bottom of this post.

Now a VM is actually created and one can login to the console.
However network connectivity is not possible.

In the vSphere UI, Vm tools are recognised (open-vm-tools 10.0.7) and two IPs are shown: 10.98.10.12 and fe80::250:56ff:fe89:3bd.
VMs created from the same Template but with the older vSphere provider, only have one address - the Ipv4 one.
Perhaps the new provider creates networks in a different way?

But after logging into the console and pinging the Vms default router, connectivity is suddenly possible.

Tried change the network device from e1000 (as in the template) to vmxnet3: no improvement.

Any suggestions?

Sean

----------  cmd line:
terraform apply -var vmname=sb-test -var network="net1" -var ipv4_address="10.98.10.12" -var ipv4_gateway="10.98.10.1"

--------- main.cf:
provider "vsphere" {
  version = "~> 1.1"

}
data "vsphere_datacenter" "dc" {
  name = "${var.datacenter}"
}
data "vsphere_datastore" "datastore" {
  name = "${var.datastore}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_resource_pool" "pool" {
  name          = "${var.resource_pool}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network" {
  name          = "${var.network}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_virtual_machine" "template" {
  name          = "${var.template}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
resource "vsphere_virtual_machine" "vm" {
  name             = "${var.vmname}"
  memory           = "${var.memory}"
  num_cpus         = "${var.cpus}"
  resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
  datastore_id     = "${data.vsphere_datastore.datastore.id}"
  folder           = "${var.vfolder}"
  guest_id  = "${data.vsphere_virtual_machine.template.guest_id}"
  scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"

  network_interface {
    network_id   = "${data.vsphere_network.network.id}"
    adapter_type = "${data.vsphere_virtual_machine.template.network_interface_types[0]}"
  }
  disk {
    name             = "${var.vmname}.vmdk"
    eagerly_scrub    = "${data.vsphere_virtual_machine.template.disks.0.eagerly_scrub}"
    thin_provisioned = "${data.vsphere_virtual_machine.template.disks.0.thin_provisioned}"
    size             = "${data.vsphere_virtual_machine.template.disks.0.size}"

  }
  clone {
    template_uuid = "${data.vsphere_virtual_machine.template.id}"
    customize {
      linux_options {
        host_name = "${var.vmname}"
        domain    = "${var.domain}"
      }
      network_interface {
        ipv4_address = "${var.ipv4_address}"
        ipv4_netmask = "${var.ipv4_prefix_length}"
      }
      ipv4_gateway   = "${var.ipv4_gateway}"
    }
  }
  connection {
    user     = "${var.user_login}" # how terraform SSHs into the vm for remote-exec
    password = "ubuntu"
  }
  provisioner "remote-exec" {
    inline = ["echo 'running bootstrap'"]
  }
}

--------- creation logs..
vsphere_virtual_machine.vm: Creating...
  boot_retry_delay:                                     "" => "10000"
  change_version:                                       "" => "<computed>"
  clone.#:                                              "" => "1"
  clone.0.customize.#:                                  "" => "1"
  clone.0.customize.0.ipv4_gateway:                     "" => "10.98.10.1"
  clone.0.customize.0.linux_options.#:                  "" => "1"
  clone.0.customize.0.linux_options.0.domain:           "" => "foo.net"
  clone.0.customize.0.linux_options.0.host_name:        "" => "sb-test"
  clone.0.customize.0.linux_options.0.hw_clock_utc:     "" => "true"
  clone.0.customize.0.network_interface.#:              "" => "1"
  clone.0.customize.0.network_interface.0.ipv4_address: "" => "10.98.10.12"
  clone.0.customize.0.network_interface.0.ipv4_netmask: "" => "24"
  clone.0.customize.0.timeout:                          "" => "10"
  clone.0.template_uuid:                                "" => "4209072e-4e67-0fe9-e6fe-bb42df581931"
  clone.0.timeout:                                      "" => "30"
  cpu_limit:                                            "" => "-1"
  cpu_share_count:                                      "" => "<computed>"
  cpu_share_level:                                      "" => "normal"
  datastore_id:                                         "" => "datastore-1697"
  default_ip_address:                                   "" => "<computed>"
  disk.#:                                               "" => "1"
  disk.0.attach:                                        "" => "false"
  disk.0.device_address:                                "" => "<computed>"
  disk.0.disk_mode:                                     "" => "persistent"
  disk.0.disk_sharing:                                  "" => "sharingNone"
  disk.0.eagerly_scrub:                                 "" => "false"
  disk.0.io_limit:                                      "" => "-1"
  disk.0.io_reservation:                                "" => "0"
  disk.0.io_share_count:                                "" => "0"
  disk.0.io_share_level:                                "" => "normal"
  disk.0.keep_on_remove:                                "" => "false"
  disk.0.key:                                           "" => "0"
  disk.0.name:                                          "" => "sb-test.vmdk"
  disk.0.size:                                          "" => "16"
  disk.0.thin_provisioned:                              "" => "false"
  disk.0.unit_number:                                   "" => "0"
  disk.0.write_through:                                 "" => "false"
  ept_rvi_mode:                                         "" => "automatic"
  firmware:                                             "" => "bios"
  folder:                                               "" => "terraform"
  force_power_off:                                      "" => "true"
  guest_id:                                             "" => "ubuntu64Guest"
  guest_ip_addresses.#:                                 "" => "<computed>"
  host_system_id:                                       "" => "<computed>"
  hv_mode:                                              "" => "hvAuto"
  imported:                                             "" => "<computed>"
  memory:                                               "" => "1024"
  memory_limit:                                         "" => "-1"
  memory_share_count:                                   "" => "<computed>"
  memory_share_level:                                   "" => "normal"
  migrate_wait_timeout:                                 "" => "30"
  name:                                                 "" => "sb-test"
  network_interface.#:                                  "" => "1"
  network_interface.0.adapter_type:                     "" => "e1000"
  network_interface.0.bandwidth_limit:                  "" => "-1"
  network_interface.0.bandwidth_reservation:            "" => "0"
  network_interface.0.bandwidth_share_count:            "" => "<computed>"
  network_interface.0.bandwidth_share_level:            "" => "normal"
  network_interface.0.device_address:                   "" => "<computed>"
  network_interface.0.key:                              "" => "<computed>"
  network_interface.0.mac_address:                      "" => "<computed>"
  network_interface.0.network_id:                       "" => "dvportgroup-1245"
  num_cores_per_socket:                                 "" => "1"
  num_cpus:                                             "" => "1"
  reboot_required:                                      "" => "<computed>"
  resource_pool_id:                                     "" => "resgroup-3004"
  run_tools_scripts_after_power_on:                     "" => "true"
  run_tools_scripts_after_resume:                       "" => "true"
  run_tools_scripts_before_guest_shutdown:              "" => "true"
  run_tools_scripts_before_guest_standby:               "" => "true"
  scsi_controller_count:                                "" => "1"
  scsi_type:                                            "" => "lsilogic"
  shutdown_wait_timeout:                                "" => "3"
  swap_placement_policy:                                "" => "inherit"
  uuid:                                                 "" => "<computed>"
  vmware_tools_status:                                  "" => "<computed>"
  vmx_path:                                             "" => "<computed>"
  wait_for_guest_net_timeout:                           "" => "5"
vsphere_virtual_machine.vm: Still creating... (10s elapsed)
....
2018-01-15T13:37:01.881+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:37:01 [DEBUG] Powering on virtual machine "/folder/sb-test"
2018-01-15T13:37:04.068+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:37:04 [DEBUG] vsphere_virtual_machine (ID = 4209e07e-65bd-7539-2417-ff623c9711c0): Waiting for VM customization to complete
2018-01-15T13:37:54.513+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:37:54 [DEBUG] Waiting for routeable address on VM "/folder/sb-test" (timeout = 5m)
...
2018-01-15T13:38:43.937+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:43 [DEBUG] Routeable address available for VM "/folder/sb-test"
...
2018-01-15T13:38:44.005+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] Reading tags for object "vm-3349"
2018-01-15T13:38:44.342+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] Tags for object "vm-3349":
2018-01-15T13:38:44.342+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] vsphere_virtual_machine (ID = 4209e07e-65bd-7539-2417-ff623c9711c0): Checking guest networking state
2018-01-15T13:38:44.343+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] vsphere_virtual_machine (ID = 4209e07e-65bd-7539-2417-ff623c9711c0): Primary IP address: 10.98.10.12
2018-01-15T13:38:44.343+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] vsphere_virtual_machine (ID = 4209e07e-65bd-7539-2417-ff623c9711c0): All IP addresses: 10.98.10.12,fe80::250:56ff:fe89:fe8f
2018-01-15T13:38:44.343+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 13:38:44 [DEBUG] vsphere_virtual_machine (ID = 4209e07e-65bd-7539-2417-ff623c9711c0): Read complete
Error applying plan:

1 error(s) occurred:

* vsphere_virtual_machine.vm: 1 error(s) occurred:
* Resource 'vsphere_virtual_machine.vm' does not have attribute 'network_interface.0.ipv4_address' for variable 'vsphere_virtual_machine.vm.network_interface.0.ipv4_address'







It must be an error in my config - maybe someone else can the where the mistake is

Sean Boran

unread,
Jan 15, 2018, 10:48:00 AM1/15/18
to Terraform

Update
- Specifying DNS ensured that the Network interface came fully up and is reachable, login via SSH works.
- Rebuilt the base image/Template so that Ipv6 is fully disabled, so vSphere only sees one IP
However the error remains:


Resource 'vsphere_virtual_machine.vm' does not have attribute 'network_interface.0.ipv4_address' for variable 'vsphere_virtual_machine.vm.network_interface.0.ipv4_address'

018-01-15T16:16:36.410+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] Reading tags for object "vm-3357"
vsphere_virtual_machine.vm: Still creating... (2m40s elapsed)
2018-01-15T16:16:36.773+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] Tags for object "vm-3357":
2018-01-15T16:16:36.773+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] vsphere_virtual_machine (ID = 42096a87-5007-45f8-8a9b-acf7278036c9): Checking guest networking state
2018-01-15T16:16:36.774+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] vsphere_virtual_machine (ID = 42096a87-5007-45f8-8a9b-acf7278036c9): Primary IP address: 10.98.10.12
2018-01-15T16:16:36.774+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] vsphere_virtual_machine (ID = 42096a87-5007-45f8-8a9b-acf7278036c9): All IP addresses: 10.98.10.12
2018-01-15T16:16:36.774+0100 [DEBUG] plugin.terraform-provider-vsphere_v1.2.0_x4: 2018/01/15 16:16:36 [DEBUG] vsphere_virtual_machine (ID = 42096a87-5007-45f8-8a9b-acf7278036c9): Read complete
2018/01/15 16:16:36 [DEBUG] plugin: waiting for all plugin processes to complete...
2018-01-15T16:16:36.793+0100 [DEBUG] plugin.terraform: remote-exec-provisioner (internal) 2018/01/15 16:16:36 [DEBUG] plugin: waiting for all plugin processes to complete...
2018-01-15T16:16:36.793+0100 [DEBUG] plugin.terraform: local-exec-provisioner (internal) 2018/01/15 16:16:36 [DEBUG] plugin: waiting for all plugin processes to complete...

Reading carefully these logs allow the solution to be found: the local-exec was failing since ${vsphere_virtual_machine.vm.network_interface.0.ipv4_address} was used instead  of  $vsphere_virtual_machine.vm.clone.0.customize.0.network_interface.0.ipv4_address .-

Oops!
Issue solved!

Sean

Dharmendra Singh

unread,
Jan 21, 2018, 10:20:08 AM1/21/18
to Terraform
Hi ,

Can you please post your corrected mail.tf file so i can also create a VM using the same . Thanks in advance . 

Sean Boran

unread,
Jan 22, 2018, 6:47:55 AM1/22/18
to Terraform

So for dns:
  clone {
   customize {  
      dns_server_list  = ["10.1.226.40", "10.2.226.200"]
      dns_suffix_list = ["foo.net"]

Then corrected the network_interface variable in local-exec:
    provisioner "local-exec" {
       command = "name=${var.vmname ip=${vsphere_virtual_machine.vm.clone.0.customize.0.network_interface.0.ipv4_address} ${var.local_script}"
    }  

And also output.tf
output "vmname" {
  value = "${var.vmname}"
}
output "ip" {
  value = "${vsphere_virtual_machine.vm.clone.0.customize.0.network_interface.0.ipv4_address}"
}

Sean
Reply all
Reply to author
Forward
0 new messages