As part of an automated build process at my work, I am learning packer to utilize it in building the VM templates we clone from in vSphere. I’m starting out with building our Centos 7 template but am encountering a “Waiting for IP” timeout error. The goal is to use our existing Foreman infrastructure as part of this process. The template has a profile in Foreman. Once a month or so, we will automate a process to move the template to build mode, download the Full Boot ISO, build the VM, and then convert it to a template. This will reduce the time it takes to bring up a new VM since it will be updated with the latest patches. In testing this, it works up to a point. The packer tool builds the VM fine and it comes up fully on the network (utilizing DHCP for the IP) but eventually gets torn down when the Waiting for IP timeout occurs.
It is my understanding that packer utilizes the open-vm-tools to get the IP. vmtoolsd is fully up on the VM after being built and vSphere is able to grab the IP from the VM but packer is not. Am I missing something here?
The packer version is 1.7.4 and the ESXi version is 6.7.0.
Thanks in advance for any insight.
centos7template.pkr.hcl:
packer {
required_plugins {
vsphere = {
version = ">= 0.0.1"
source = "github.com/hashicorp/vsphere"
}
}
}
variable "iso_name" {
type = string
default = "templatecentos7dev_20210817_2047.iso"
description = "ISO to build from generated by Foreman"
}
variable "boot_string" {
type = string
default = "foreman_special ipv6.disable=1 nameserver=10.xxx.xx.xx<enter>"
description = "Default boot string for ISO generated by Foreman"
}
variable "vcenter_name" {
type = string
default = "vsphereserver.local"
description = "Default vsphere server"
}
source "vsphere-iso" "centos7" {
boot_command = [ var.boot_string ]
boot_wait = "25s"
vcenter_server = var.vcenter_name
datacenter = "DCNAME"
datastore = "Templates_Unity_01"
username = "USERNAME"
password = "PASSWORD"
insecure_connection = true
CPUs = 1
RAM = 4096
vm_name = "templatecentos7dev"
cluster = "LinuxDev"
iso_checksum = "md5:404301682d5e382a6027c3314288ef67"
iso_url = var.iso_name
ssh_username = "root"
ip_wait_timeout = "45m"
network_adapters {
network = "VLAN_Linux"
network_card = "vmxnet3"
mac_address = "00:50:56:AA:AA:AA"
}
storage {
disk_size = 20000
disk_thin_provisioned = true
}
}
build {
name = "centos7"
sources = [
"source.vsphere-iso.centos7",
]
}