build {
  name = "ubuntu"
  description = <<EOF
This build creates ubuntu images for ubuntu versions :
* 16.04
* 18.04 
For the following builers :
* virtualbox-iso
* parallels-iso
* vmware-iso
* qemu
* vsphere-iso
EOF

  // the common fields of the source blocks are defined in the
  // source.builder-type.pkr.hcl files, here we only set the fields specific to
  // the different versions of ubuntu.
  source "source.virtualbox-iso.base-ubuntu-amd64" {
    name                    = "16.04"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
    output_directory        = "virtualbox_iso_ubuntu_1604_amd64"
    boot_command            = local.ubuntu_1604_boot_command
    boot_wait               = "10s"
  }

  source "source.virtualbox-iso.base-ubuntu-amd64" {
    name                    = "18.04"
    iso_url                 = local.iso_url_ubuntu_1804
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1804}"
    output_directory        = "virtualbox_iso_ubuntu_1804_amd64"
    boot_command            = local.ubuntu_1804_boot_command
    boot_wait               = "5s"
  }

  source "source.parallels-iso.base-ubuntu-amd64" {
    name                    = "16.04"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
    output_directory        = "parallels_iso_ubuntu_1604_amd64"
    boot_command            = local.ubuntu_1604_boot_command
  }

  source "source.parallels-iso.base-ubuntu-amd64" {
    name                    = "18.04"
    iso_url                 = local.iso_url_ubuntu_1804
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1804}"
    output_directory        = "parallels_iso_ubuntu_1804_amd64"
    boot_command            = local.ubuntu_1804_boot_command
  }

  source "source.vmware-iso.base-ubuntu-amd64" {
    name                    = "16.04"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
    output_directory        = "vmware_iso_ubuntu_1604_amd64"
    boot_command            = local.ubuntu_1604_boot_command
  }

  source "source.vmware-vmx.base-ubuntu-amd64" {
    name        = "16.04"
    source_path = "vmware_iso_ubuntu_1604_amd64/packer-base-ubuntu-amd64.vmx"
  }

  source "source.vmware-iso.base-ubuntu-amd64" {
    name                    = "18.04"
    iso_url                 = local.iso_url_ubuntu_1804
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1804}"
    output_directory        = "vmware_iso_ubuntu_1804_amd64"
    boot_command            = local.ubuntu_1804_boot_command
  }

  source "source.vmware-iso.esxi-base-ubuntu-amd64" {
    name                    = "16.04-from-esxi"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
    output_directory        = "vmware_iso_ubuntu_1604_amd64_from_esxi"
    boot_command            = local.ubuntu_1604_boot_command
  }

  source "source.qemu.base-ubuntu-amd64" {
    name                    = "16.04"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
    output_directory        = "qemu_iso_ubuntu_1604_amd64"
    boot_command            = local.ubuntu_1604_boot_command
  }

  source "source.qemu.base-ubuntu-amd64" {
    name                    = "18.04"
    iso_url                 = local.iso_url_ubuntu_1804
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1804}"
    output_directory        = "qemu_iso_ubuntu_1804_amd64"
    boot_command            = local.ubuntu_1804_boot_command
  }

  source "source.vsphere-iso.base-ubuntu-amd64" {
    name                    = "16.04"
    vm_name                 = "ubuntu-16.04"
    iso_url                 = local.iso_url_ubuntu_1604
    iso_checksum            = "file:${local.iso_checksum_url_ubuntu_1604}"
  }

  provisioner "shell" {
    environment_vars  = [ "HOME_DIR=/home/vagrant" ]
    execute_command   = "echo 'vagrant' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'"
    expect_disconnect = true
    // fileset will list files in etc/scripts sorted in an alphanumerical way.
    scripts           = fileset(".", "etc/scripts/*.sh")
  }
}