Изменение размера диска при клонировании из Snapshot в vSphere - PullRequest
1 голос
/ 07 мая 2019

Мы создаем виртуальные машины с terraform, как описано в этом примере:

https://www.terraform.io/docs/providers/vsphere/r/virtual_machine.html#cloning-and-customization-example

Мы хотим, чтобы каждая новая машина имела свой размер для своего корневого раздела без создания десятков исходных файлов.виртуальные машины.

Источником нашего клона является снимок Ubuntu (16.04).Снимок имеет корневой диск, на который выделено 20 ГБ.

При создании связанного клона размер диска клона должен соответствовать размеру снимка.Чтобы иметь возможность изменять размер дисков на клонированных виртуальных машинах, мы используем полные клоны.

Это прекрасно работает, за исключением того, что новый размер диска не назначен ни одному разделу клона.Корневой раздел всегда имеет размер исходного раздела 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 создать клон / новую виртуальную машину и изменить размер (корневого) диска в процессе клонирования?

1 Ответ

0 голосов
/ 09 мая 2019

То, как я решил это сейчас, грязно, но работает.Я выполняю сценарий оболочки, который перераспределяет диск во время подготовки:

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 {
      ...
    }
  }
}

Кто-нибудь знает лучшее решение?

...