Мой текущий код устанавливает одно хранилище данных при репликации нескольких виртуальных машин.
Я хочу назначить хранилище данных для каждой виртуальной машины.
Есть ли способ?
ex) vm - test01, хранилище данных - datastore01
vm - test02, datastore - datastore02
vm - test05, хранилище данных - datastore01
vm - test10, datastroe - datastore04
* 10 * vm - test15, datastroe - datastore02
vm.tf
#data source
data "vsphere_datacenter" "dc" {
name = var.dc
}
data "vsphere_datastore" "datastore" {
name = var.datastore
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_compute_cluster" "cluster" {
name = var.cluster
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network1" {
name = var.network1
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network2" {
name = var.network2
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 "allvms" {
for_each = var.vms
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id = data.vsphere_datastore.datastore.id
guest_id = data.vsphere_virtual_machine.template.guest_id
name = each.value.vmname
folder = each.value.vfolder
memory = each.value.vmemory
num_cpus = each.value.vcpu
annotation = each.value.vannotation
firmware = each.value.vfirmware
scsi_type = data.vsphere_virtual_machine.template.scsi_type
network_interface {
network_id = data.vsphere_network.network1.id
adapter_type = "vmxnet3"
}
network_interface {
network_id = data.vsphere_network.network2.id
adapter_type = "vmxnet3"
}
disk {
label = "disk0"
size = data.vsphere_virtual_machine.template.disks.0.size
eagerly_scrub = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
}
dynamic "disk" {
for_each = flatten([ for i in each.value.vdisk : {
vdisklabel = i.vdisklabel
vdisksize = i.vdisksize
vdisknumber = i.vdisknumber
}])
content {
label = disk.value.vdisklabel
size = disk.value.vdisksize
unit_number = disk.value.vdisknumber
}
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
linux_options {
host_name = each.value.vmname
domain = ""
}
network_interface {
ipv4_address = each.value.vip1
ipv4_netmask = each.value.vnetmask1
}
network_interface {
ipv4_address = each.value.vip2
ipv4_netmask = each.value.vnetmask2
}
ipv4_gateway = each.value.vgateway
}
}
}
variable.tf
variable "dc" {
}
variable "datastore" {
}
variable "cluster" {
}
variable "network1" {
}
variable "network2" {
}
variable "template" {
}
variable "vms" {
type = map(object({
vmname = string
vfolder = string
vcpu = number
vmemory = number
vfirmware = string
vannotation = string
vip1 = string
vnetmask1 = number
vip2 = string
vnetmask2 = number
vgateway = string
vdisk = list(object({
vdisklabel = string
vdisksize = number
vdisknumber = number
}))
}))
}
resource.tf
module "resource" {
source = "../Terraform"
dc = "test-Datacenter"
datastore = "test-datastore"
cluster = "test_Cluster"
network1 = "192.168.200..xxx"
network2 = "192.168.201..xxx"
template = "test-tmp"
vms = {
test = {
vmname = "test-00"
vfolder = "0.test"
vcpu = "4"
vmemory = "4096"
vfirmware = "bios"
vannotation = "#testvm"
vip1 = "192.168.200.200"
vnetmask1 = "24"
vip2 = "192.168.201.200"
vnetmask2 = "24"
vgateway = "192.168.200.1"
vdisk = [
{
vdisklabel = "disk1"
vdisksize = "30"
vdisknumber = "1""
}
]
}
test1 = {
vmname = "test-01"
vfolder = "0.test"
vcpu = "4"
vmemory = "4096"
vfirmware = "bios"
vannotation = "testvm;"
vip1 = "192.168.200.201"
vnetmask1 = "24"
vip2 = "192.168.201.201"
vnetmask2 = "24"
vgateway = "192.168.200.1"
vdisk = [
{
vdisklabel = "disk1"
vdisksize = "40"
vdisknumber = "1"
}
]
}
}
}