Skip to content
Snippets Groups Projects

Image build

Requirements

  • Packer: this is the tool that will automate all the steps of image creation
  • Ansible: this is the tool that will be used to provision the virtual machine (take a look at the requirements.txt file for exact Ansible requirements)
  • VMware OVF Tool: this is required by Packer to export the image from the VMware Hypervisor
  • A running and reachable VMware ESXi Hypervisor

Prepare Packer file

Copy the example Packer file packer/example.json, for example to packer/mymediaserver.json, and edit the copied file.

These variable must be configured:

  • variables.name: used to set the output filename and the machine hostname
  • variables.esx_*: VMware hypervisor connection settings
  • variables.network_*: used to pre-configure network settings, leave empty to ignore
  • variables.skyreach_*: use either system_key or activation_key and leave the other empty

Then you need the groups that will be applied to the machine, for example for a MediaServer:

{
  [...]
  "provisioners": [
    [...]
    {
      "type": "ansible",
      [...]
      "groups": [
        "msmonitor",
        "postgres",
        "mirismanager",
        "wowza",
        "celerity",
        "mediaserver",
        "mediaimport"
      ]
    }
  ]
}

For a worker:

{
  [...]
  "provisioners": [
    [...]
    {
      "type": "ansible",
      [...]
      "groups": [
        "mediaworker"
      ]
    }
  ]
}

You can also pass additional variables to ansible in provisionners['1'].extra_arguments.

Build image

Check that the Packer file is valid (the hypervisor must be reachable):

make image-validate build=packer/mymediaserver.json

Build the OVA:

make image build=packer/mymediaserver.json

Troubleshoot

Hypervisor version incompatibility

If the produced OVA is not compatible with the hypervisor, try to change the "VM compatibility mode" by changing the value of version option.

More infromation:

Build failed

If a build fail at one of the Ansible steps, you can set to true the keep_registred and skip_export options, then connect to the VM on the hypervisor and do some diagnostics.

More information: