>

이 예제에 설명 된대로 테라 포름으로 가상 머신을 생성하고 있습니다 :

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

수십 개의 소스 VM을 만들지 않고 각각의 새 컴퓨터가 루트 파티션의 크기를 다르게 설정하려고합니다.

복제의 소스는 우분투 (16.04) 스냅 샷입니다. 스냅 샷에는 루트 디스크에 20GB가 할당되어 있습니다.

링크 된 클론을 생성 할 때 클론의 디스크 크기는 스냅 샷과 동일해야합니다. 복제 된 VM의 디스크 크기를 조정하기 위해 전체 복제본을 사용하고 있습니다.

새 디스크 크기가 클론의 파티션에 할당되지 않은 것을 제외하고는 잘 작동합니다. 루트 파티션은 항상 소스 vms 파티션의 크기를 갖습니다. VM 생성 후 할당되지 않은 공간을 수동으로 할당해야합니다.

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에서 이미지 및 맛과 같은 이미지가 누락되었습니다.

Traform 및 vSphere를 사용하여 복제/새 VM을 생성하고 복제 프로세스의 일부로 (루트) 디스크 크기를 조정할 수 있습니까?

  • 답변 # 1

    지금 해결 한 방법은 더럽지 만 작동합니다. 프로비저닝 중에 디스크를 다시 파티션하는 쉘 스크립트를 실행 중입니다.

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

    누군가 더 나은 솔루션을 알고 있습니까?

  • 이전 git clone - 힘내 메타 데이터 - 각 브랜치와 독립적 인 git 메타 데이터를 추가하는 방법이 있습니까?
  • 다음 visual studio 2017 hresult - 프로젝트 생성시 0x80070005/e_accessdenied