Terraform 在vSphere中从快照克隆时调整磁盘大小
我们正在使用terraform创建虚拟机,如本例所述: 我们希望每台新机器的根分区具有不同的大小,而无需创建几十个源VM 我们的克隆源是一个ubuntu(16.04)快照。快照有一个分配了20 GB的根磁盘 创建链接克隆时,克隆的磁盘大小必须与快照的大小相同。为了能够调整克隆虚拟机上的磁盘大小,我们使用了完整克隆 除了没有将新磁盘大小分配给克隆的任何分区之外,这一切正常。根分区始终具有源vms分区的大小。创建VM后,我必须手动分配未分配的空间Terraform 在vSphere中从快照克隆时调整磁盘大小,terraform,vsphere,Terraform,Vsphere,我们正在使用terraform创建虚拟机,如本例所述: 我们希望每台新机器的根分区具有不同的大小,而无需创建几十个源VM 我们的克隆源是一个ubuntu(16.04)快照。快照有一个分配了20 GB的根磁盘 创建链接克隆时,克隆的磁盘大小必须与快照的大小相同。为了能够调整克隆虚拟机上的磁盘大小,我们使用了完整克隆 除了没有将新磁盘大小分配给克隆的任何分区之外,这一切正常。根分区始终具有源vms分区的大小。创建VM后,我必须手动分配未分配的空间 resource "vsphere_virtual
resource "vsphere_virtual_machine" "vm" {
count = "${var.count}"
name = "${var.stage}-${var.name}-${count.index}"
...
network_interface {
network_id = "${data.vsphere_network.network.id}"
adapter_type = "${data.vsphere_virtual_machine.source_vm.network_interface_types[0]}"
}
disk {
label = "disk0"
# This is to static for our use case as we will always result in VMs
# having the same disk size
#size = "${data.vsphere_virtual_machine.source_vm.disks.0.size}"
size = "${var.disk_size}" # Ideally this one should be appplied to the root partition :)
eagerly_scrub = false
thin_provisioned = false
}
clone {
template_uuid = "${data.vsphere_virtual_machine.source_vm.id}"
# use full clones to adopt disk size
linked_clone = false
customize {
linux_options {
...
}
network_interface {}
}
}
}
我不是vSphere方面的专家,但我缺少了一些像Openstack中的图像和味道之类的东西
在使用Terraform和vSphere创建克隆/新虚拟机并在克隆过程中调整(根)磁盘的大小时,是否有任何可能性?我现在解决这个问题的方法是肮脏的,但有效。我正在执行一个shell脚本,该脚本在配置期间重新分区磁盘:
resource "vsphere_virtual_machine" "vm" {
...
# partitioning
provisioner "file" {
source = "${path.module}/../../files/partitioning.sh"
destination = "/tmp/partitioning.sh"
connection {
...
}
}
provisioner "remote-exec" {
inline = [
"echo \"Initializing partitions\"",
"echo ${var.sudo_password} | sudo -S bash /tmp/partitioning.sh",
]
connection {
...
}
}
}
有人知道更好的解决方法吗?我现在解决这个问题的方法很肮脏,但很有效。我正在执行一个shell脚本,该脚本在配置期间重新分区磁盘:
resource "vsphere_virtual_machine" "vm" {
...
# partitioning
provisioner "file" {
source = "${path.module}/../../files/partitioning.sh"
destination = "/tmp/partitioning.sh"
connection {
...
}
}
provisioner "remote-exec" {
inline = [
"echo \"Initializing partitions\"",
"echo ${var.sudo_password} | sudo -S bash /tmp/partitioning.sh",
]
connection {
...
}
}
}
有人知道更好的解决方案吗?有一种方法可以做到这一点,那就是将脚本烘焙到要克隆的图像中。在第一次引导时,您可以执行这个脚本,它查看驱动器信息并使用所有可用空间重新创建分区表。之后,您可以重新启动计算机(最好)或重新加载分区表。谢谢您的回复。如果没有别的办法,我想我必须这么做。但是vSphere真的没有任何机制来适应虚拟机创建时的磁盘大小吗?对我来说,这似乎是一个非常基本的功能,这里没有。可能有一种方法可以做到这一点,将脚本烘焙到要克隆的图像中。在第一次引导时,您可以执行这个脚本,它查看驱动器信息并使用所有可用空间重新创建分区表。之后,您可以重新启动计算机(最好)或重新加载分区表。谢谢您的回复。如果没有别的办法,我想我必须这么做。但是vSphere真的没有任何机制来适应虚拟机创建时的磁盘大小吗?对我来说,这听起来像是一个非常基本的功能,但这里没有。