我们正在按照本示例中的描述使用Terraform创建虚拟机:
我们希望每台新计算机的根分区具有不同的大小,而不创建数十个源VM。
我们的克隆源是一个Ubuntu(16.04)快照。快照具有分配了20 GB的根磁盘。
创建链接克隆时,克隆磁盘的大小必须与快照相同。为了能够在克隆的VM上调整磁盘大小,我们使用完整克隆。
此工作正常,但没有将新磁盘大小分配给克隆的任何分区。根分区始终具有源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并调整(根)磁盘的大小?
答案 0 :(得分:0)
我现在解决的方法很脏,但是可以用。我正在执行在配置过程中对磁盘进行重新分区的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 {
...
}
}
}
有人知道更好的解决方案吗?