Skip to content

Datastore

Type: vsphere-datastore Artifact BuilderId: vsphere.datastore

This data source retrieves information about existing datastores from vSphere and returns the name, managed object ID, and summary capacity fields for a datastore that matches all specified filters. The result can be used with the builders to set datastore.

Configuration Reference

Filters Configuration

Optional:

  • name (string) - Basic filter with glob support (e.g. w01-cl01-vsan or *-vsan). Defaults to *. Using stricter globs does not reduce execution time because the vSphere API returns the full inventory, but can improve readability over regular expressions.

  • name_regex (string) - Extended name filter with regular expression support (e.g. ^w01-cl[0-9]+-vsan$). Default is empty. The match is checked by substring. Use ^ and $ to define a full string. The expression must use Go Regex Syntax.

  • host (string) - Filter to return only datastores mounted on the specified ESX host.

  • cluster (string) - Filter to return only datastores available to the specified compute cluster.

  • tag ([]Tag) - Filter to return only datastores that have all specified tags attached.

  • most_free_space (bool) - When more than one datastore matches the filters, select the datastore with the most free space (summary.free). By default, multiple matches result in an error.

Tags Filter Configuration

Tag identifies a vSphere tag by name and category for datasource filters. Specify one or more tag blocks; every listed tag must be attached.

    tag {
      category = "environment"
      name     = "production"
    }

Required:

  • name (string) - Name of the tag that must be attached to the object.
  • category (string) - Name of the tag category that contains the tag.

    Note

    Both name and category must be specified in the tag filter.

Connection Configuration

Optional:

  • vcenter_server (string) - The fully qualified domain name or IP address of the vCenter instance.
  • username (string) - The username to authenticate with the vCenter instance.
  • password (string) - The password to authenticate with the vCenter instance.
  • insecure_connection (bool) - Do not validate the certificate of the vCenter instance. Defaults to false.

    Note

    This option is beneficial in scenarios where the certificate is self-signed or does not meet standard validation criteria.

  • datacenter (string) - The name of the datacenter object in the vSphere inventory.

    Note

    Required if more than one datacenter object exists in the vSphere inventory.

Output

  • name (string) - Name of the found datastore.
  • id (string) - Managed object ID of the found datastore.
  • summary (Summary) - Capacity fields from the datastore summary.

Summary

  • capacity (int64) - Total capacity of the datastore, in bytes.
  • free (int64) - Free space available on the datastore, in bytes.

Example Usage

Select Datastore with Most Free Space

This example finds the datastore with the most free space among those matching a name glob and uses it with the vSphere Clone builder.

data "vsphere-datastore" "build" {
  vcenter_server  = "vc01.example.com"
  username        = "administrator@vsphere.local"
  password        = "VMware1!"
  datacenter      = "dc-01"
  name            = "*-vsan"
  most_free_space = true
}

source "vsphere-clone" "example" {
  vcenter_server = "vc01.example.com"
  username       = "administrator@vsphere.local"
  password       = "VMware1!"
  host           = "esx01.example.com"
  datastore      = data.vsphere-datastore.build.name
  template       = "linux-debian"
  vm_name        = "linux-debian-from-ds"
  communicator   = "none"
}

build {
  sources = ["source.vsphere-clone.example"]
}

Filter by Tags

data "vsphere-datastore" "build" {
  vcenter_server  = "vc01.example.com"
  username        = "administrator@vsphere.local"
  password        = "VMware1!"
  datacenter      = "dc-01"
  most_free_space = true
  tag {
    category = "datastore-type"
    name     = "vsan"
  }
}

locals {
  datastore_name = data.vsphere-datastore.build.name
  free_bytes     = data.vsphere-datastore.build.summary.free
}

Filter by Host or Compute Cluster

data "vsphere-datastore" "on_host" {
  vcenter_server  = "vc01.example.com"
  username        = "administrator@vsphere.local"
  password        = "VMware1!"
  datacenter      = "dc-01"
  host            = "esx01.example.com"
  most_free_space = true
}

data "vsphere-datastore" "on_cluster" {
  vcenter_server  = "vc01.example.com"
  username        = "administrator@vsphere.local"
  password        = "VMware1!"
  datacenter      = "dc-01"
  cluster         = "cluster-01"
  most_free_space = true
}