Packer 和 Terraform 集成的工作流示例

Workflow sample for Packer and Terraform integration

我正在尝试在 VMWare Hypervisor 中为虚拟机创建一个实验室,以便在 RHEL 中安装集群;我已经看到 Packer 和 Terraform 非常有趣,但我找不到关于他们工作流程的清晰和/或详细的示例,特别是如何在 Packer 中创建图像然后让 Terraform 使用它。 我已经看到 Packer 具有构建功能,但甚至还有某种类型的部署功能,我不明白这些是否与 Terraform 重叠;我读到可以通过另一个 HashiCorp 产品 Atlas 实现某种类型的自动化,但我不想使用它,至少在该软件的研究和试用阶段是这样。 所以我想做的是使用 Packer(RHEL 基础加上其他功能)创建一个 VMWare 兼容的虚拟机映像,将它们传递给在我的 esxi 中创建虚拟机的 Terraform 工件。

希望得到指导。

我不确定你的具体用例,但 Terraform 确实有数据源可以更容易地将 Packer 构建的图像连接到 Terraform:https://www.terraform.io/docs/configuration/data-sources.html

这是为 AWS EC2 实例使用 Packer Built AMI 的部分示例:

data "aws_ami" "bastion" {
  filter {
    name   = "state"
    values = ["available"]
  }

  filter {
    name   = "tag:Name"
    values = ["Bastion"]
  }

  most_recent = true
}

resource "aws_instance" "bastion" {
  ami = "${data.aws_ami.bastion.id}"
  # ...
}

我还使用 bash 脚本来解析 Packer 生成的值并将它们转储到 Terraform 使用的 tfvars 文件中。