172 lines
5.2 KiB
HCL
172 lines
5.2 KiB
HCL
packer {
|
|
required_plugins {
|
|
}
|
|
}
|
|
|
|
source "vsphere-iso" "ubuntuserver" {
|
|
vcenter_server = var.vcenter_server
|
|
username = var.vsphere_username
|
|
password = var.vsphere_password
|
|
insecure_connection = "true"
|
|
|
|
vm_name = "${var.vm_guestos}-${var.vm_name}"
|
|
datacenter = var.vsphere_datacenter
|
|
host = var.vsphere_host
|
|
folder = var.vsphere_folder
|
|
datastore = var.vsphere_datastore
|
|
|
|
guest_os_type = "ubuntu64Guest"
|
|
|
|
boot_order = "disk,cdrom"
|
|
boot_command = [
|
|
"<enter><wait2><enter><wait><f6><esc><wait>",
|
|
" autoinstall<wait2> ds=nocloud;",
|
|
"<wait><enter>"
|
|
]
|
|
boot_wait = "2s"
|
|
|
|
communicator = "ssh"
|
|
ssh_username = "ubuntu"
|
|
ssh_password = var.ssh_password
|
|
ssh_timeout = "20m"
|
|
ssh_handshake_attempts = "100"
|
|
ssh_pty = true
|
|
|
|
CPUs = 2
|
|
RAM = 4096
|
|
|
|
network_adapters {
|
|
network = var.vsphere_network
|
|
network_card = "vmxnet3"
|
|
}
|
|
storage {
|
|
disk_size = 20480
|
|
disk_thin_provisioned = true
|
|
}
|
|
disk_controller_type = ["pvscsi"]
|
|
usb_controller = ["xhci"]
|
|
|
|
cd_files = [
|
|
"packer/preseed/UbuntuServer20.04/user-data",
|
|
"packer/preseed/UbuntuServer20.04/meta-data"
|
|
]
|
|
cd_label = "cidata"
|
|
iso_url = local.iso_authenticatedurl
|
|
iso_checksum = var.iso_checksum
|
|
|
|
shutdown_command = "echo '${var.ssh_password}' | sudo -S shutdown -P now"
|
|
shutdown_timeout = "5m"
|
|
|
|
export {
|
|
images = false
|
|
output_directory = "/scratch/ubuntuserver"
|
|
}
|
|
remove_cdrom = true
|
|
}
|
|
source "vsphere-iso" "ubuntuserver-baremetal" {
|
|
vcenter_server = var.vcenter_server
|
|
username = var.vsphere_username
|
|
password = var.vsphere_password
|
|
insecure_connection = "true"
|
|
|
|
vm_name = "${var.vm_guestos}-${var.vm_name}-baremetal"
|
|
datacenter = var.vsphere_datacenter
|
|
host = var.vsphere_host
|
|
folder = var.vsphere_folder
|
|
datastore = var.vsphere_datastore
|
|
|
|
guest_os_type = "ubuntu64Guest"
|
|
|
|
boot_order = "disk,cdrom"
|
|
boot_command = [
|
|
"<enter><wait2><enter><wait><f6><esc><wait>",
|
|
" autoinstall<wait2> ds=nocloud;",
|
|
"<wait><enter>"
|
|
]
|
|
boot_wait = "2s"
|
|
|
|
communicator = "ssh"
|
|
ssh_username = "ubuntu"
|
|
ssh_password = var.ssh_password
|
|
ssh_timeout = "20m"
|
|
ssh_handshake_attempts = "100"
|
|
ssh_pty = true
|
|
|
|
CPUs = 2
|
|
RAM = 4096
|
|
|
|
network_adapters {
|
|
network = var.vsphere_network
|
|
network_card = "vmxnet3"
|
|
}
|
|
storage {
|
|
disk_size = 20480
|
|
disk_thin_provisioned = true
|
|
}
|
|
disk_controller_type = ["pvscsi"]
|
|
usb_controller = ["xhci"]
|
|
|
|
cd_files = [
|
|
"packer/preseed/UbuntuServer20.04/user-data",
|
|
"packer/preseed/UbuntuServer20.04/meta-data"
|
|
]
|
|
cd_label = "cidata"
|
|
iso_url = local.iso_authenticatedurl
|
|
iso_checksum = var.iso_checksum
|
|
|
|
shutdown_command = "echo '${var.ssh_password}' | sudo -S shutdown -P now"
|
|
shutdown_timeout = "5m"
|
|
|
|
export {
|
|
images = false
|
|
output_directory = "/scratch/ubuntuserver-baremetal"
|
|
}
|
|
remove_cdrom = true
|
|
}
|
|
|
|
build {
|
|
sources = [
|
|
"source.vsphere-iso.ubuntuserver",
|
|
"source.vsphere-iso.ubuntuserver-baremetal"
|
|
]
|
|
|
|
provisioner "ansible" {
|
|
only = ["vsphere-iso.ubuntuserver"]
|
|
|
|
playbook_file = "ansible/playbook.yml"
|
|
user = "ubuntu"
|
|
ansible_env_vars = [
|
|
"ANSIBLE_CONFIG=ansible/ansible.cfg"
|
|
]
|
|
use_proxy = "false"
|
|
extra_arguments = [
|
|
"--extra-vars", "ansible_ssh_pass=${var.ssh_password}"
|
|
]
|
|
}
|
|
|
|
post-processor "shell-local" {
|
|
only = ["vsphere-iso.ubuntuserver"]
|
|
inline = [
|
|
"pwsh -command \"& scripts/Update-OvfConfiguration.ps1 \\",
|
|
" -OVFFile '/scratch/ubuntuserver/${var.vm_guestos}-${var.vm_name}.ovf' \\",
|
|
" -Parameter @{'appliance.name'='${var.vm_guestos}';'appliance.version'='${var.vm_name}'}\"",
|
|
"pwsh -file scripts/Update-Manifest.ps1 \\",
|
|
" -ManifestFileName '/scratch/ubuntuserver/${var.vm_guestos}-${var.vm_name}.mf'",
|
|
"ovftool --acceptAllEulas --allowExtraConfig --overwrite \\",
|
|
" '/scratch/ubuntuserver/${var.vm_guestos}-${var.vm_name}.ovf' \\",
|
|
" /output/Ubuntu-Server-20.04.ova"
|
|
]
|
|
}
|
|
post-processor "shell-local" {
|
|
only = ["vsphere-iso.ubuntuserver-baremetal"]
|
|
inline = [
|
|
"qemu-img convert -f vmdk -o raw \\",
|
|
" /scratch/ubuntuserver-baremetal/${var.vm_guestos}-${var.vm_name}-baremetal-disk-0.vmdk \\",
|
|
" /scratch/ubuntuserver-baremetal/${var.vm_guestos}-${var.vm_name}.raw",
|
|
"ls /scratch/ubuntuserver-baremetal -lash",
|
|
"gzip -c \\",
|
|
" /scratch/ubuntuserver-baremetal/${var.vm_guestos}-${var.vm_name}.raw \\",
|
|
" > /output/Ubuntu-Server-20.04.raw.gz"
|
|
]
|
|
}
|
|
} |