使用Terraform创建vsphere_虚拟机资源后展开Linux分区

使用Terraform创建vsphere_虚拟机资源后展开Linux分区,terraform,Terraform,我正在利用Terraform的vsphere_virtual_machine资源从模板克隆虚拟机。磁盘子资源(模板中的每个磁盘都需要)允许您在资源调配期间增加磁盘的大小。我正在寻找关于如何从操作系统的角度(分区、逻辑卷、文件系统)自动扩展空间的建议。目前,我使用fdisk、lvextend等工具手动执行此操作,但希望在代码中实现自动化。如果这不在Terraform的范围内,是否有其他策略或自动化工具可以更好地完成此任务(例如,像Chef这样的配置管理工具)?您可以使用remote\u execp

我正在利用Terraform的vsphere_virtual_machine资源从模板克隆虚拟机。磁盘子资源(模板中的每个磁盘都需要)允许您在资源调配期间增加磁盘的大小。我正在寻找关于如何从操作系统的角度(分区、逻辑卷、文件系统)自动扩展空间的建议。目前,我使用fdisk、lvextend等工具手动执行此操作,但希望在代码中实现自动化。如果这不在Terraform的范围内,是否有其他策略或自动化工具可以更好地完成此任务(例如,像Chef这样的配置管理工具)?

您可以使用
remote\u exec
provisioner来完成此任务:

  provisioner "remote-exec" {
    connection {
      host = "${var.ip}"
      user = "ubuntu"
      password = "${var.VP}"
  }

    inline = [
      "echo ${var.VP} | sudo -S growpart /dev/sda 2",
      "sudo growpart /dev/sda 5",
      "sudo pvresize /dev/sda5",
      "sudo lvextend -l +100%FREE /dev/mapper/ubuntu--base--vg-root",
      "sudo resize2fs /dev/mapper/ubuntu--base--vg-root"
    ]
  }
根据操作系统和分区标签的不同,您的命令会略有不同,但要点是相同的

我不知道为什么我必须在
growpart/dev/sda 5
之前
growpart/dev/sda 2
,但我知道。这适用于VMWare ESXI上的Ubuntu 16.04模板

我不知道为什么我必须在
growpart/dev/sda 5
之前
growpart/dev/sda 2
,但我知道

如果运行
fdisk-l
,您将看到分区5是一个LVM,它在扩展分区2内开始和结束。因此,分区2必须先增长,然后才能增长分区5