【发布时间】:2019-05-07 09:08:24
【问题描述】:
我们正在使用 terraform 创建虚拟机,如本示例所述:
我们希望每台新机器的根分区具有不同的大小,而无需创建数十个源虚拟机。
我们的克隆源是一个 ubuntu (16.04) 快照。快照有一个分配了 20 GB 的根磁盘。
创建链接克隆时,克隆的磁盘必须与快照的大小相同。为了能够调整克隆虚拟机上的磁盘大小,我们正在使用完整克隆。
除了新磁盘大小没有分配给克隆的任何分区之外,这工作正常。根分区始终具有源 vms 分区的大小。创建虚拟机后,我必须手动分配未分配的空间。
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 创建克隆/新 VM 并在克隆过程中调整(根)磁盘大小时,是否有可能?
【问题讨论】:
-
可能有一种方法可以通过将脚本烘焙到您正在克隆的图像中来做到这一点。在第一次启动时,您可以执行此脚本,它会查看驱动器信息并使用所有可用空间重新创建分区表。之后,您可以重新启动机器(最好)或重新加载分区表。
-
感谢您的回复。如果没有其他办法,我想我必须这样做。但是 vSphere 真的没有任何机制来适应创建 vm 时的磁盘大小吗?对我来说,这听起来像是一个非常基本的功能,但这里没有。