Packer (2)

En esta lección se muestran más ejemplos de Packer con máquinas virtuales de VirtualBox.

Compresión de imagen OVA de Ubuntu

La forma recomendada de comprimir una máquina virtual Ubuntu de VirtualBox es grabar ceros en las partes no utilizadas del disco mediante la utilidad zerofree y después exportar, clonar o compactar el disco con VirtualBox o la utilidad VBoxManage. Como la utilidad zerofree no funciona sobre unidades montadas, debemos arrancar la máquina virtual con un LiveCD de otra distribución y desde ahí aplicar zerofree a la partición de disco.

En este ejemplo de automatización con Packer, vamos a realizar la compresión utilizando la distribución SystemRescueCd.

Actualmente (marzo de 2019), la última versión disponible de SystemRescue es la versión 6.0.2, publicada el 19 de febrero de 2019. En cdlibre.org hay una sección dedicada a Utilidades de disco, desde la que se puede descargar la última versión disponible.

Los elementos necesarios para realizar la compresión son los siguientes:

Ejecute la plantilla para obtener la image OVA comprimida:

packer build packer-2-1.json

Si el proceso termina correctamente, Packer creará el directorio packer-2-1 y creará en él el fichero packer-2-1-ubuntu-18-04-2-server.ova.

Plantilla de compresión de la máquina virtual (packer-2-1.json)

Esta podría ser la plantilla de compresión de la máquina virtual:

{
  "builders": [
    {
      "type": "virtualbox-ovf",
      "source_path": "packer-1-3/packer-1-3-ubuntu-18-04-2-server.ova",
      "guest_additions_mode": "disable",
      "vboxmanage": [
        ["showvminfo", "{{.Name}}"],
        ["storageattach", "{{.Name}}", "--storagectl", "IDE Controller", "--port", "0", "--device", "1", "--type", "dvddrive", "--medium", "systemrescuecd-6.0.2.iso"],
        ["modifyvm", "{{.Name}}", "--boot1", "dvd", "--boot2", "disk", "--boot3", "none", "--boot4", "none"]
      ],
      "boot_wait": "20s",
      "boot_command": [
        "<enter><wait40>",
        "sudo zerofree -v /dev/mapper/ubuntu--vg-root<enter><wait50>"
      ],
      "communicator": "none",
      "shutdown_command": "",
      "virtualbox_version_file": "",
      "vboxmanage_post": [
        ["storageattach", "{{.Name}}", "--storagectl", "IDE Controller", "--port", "0", "--device", "1", "--type", "dvddrive", "--medium", "none"],
        ["modifyvm", "{{.Name}}", "--boot1", "disk", "--boot2", "dvd", "--boot3", "none", "--boot4", "none"]
      ],
      "vm_name": "packer-3-1-ubuntu-18-04-2-server",
      "output_directory": "packer-3-1",
      "format": "ova"
    }
  ]
}

Comentarios:

Nota: