{ "builders": [ { "format": "qcow2", "headless": true, "output_directory": "{{user `tmp_directory`}}/output", "shutdown_command": "echo packer | sudo -S shutdown -P now", "ssh_password": "qemubuild", "ssh_username": "qemubuild", "ssh_wait_timeout": "120m", "type": "qemu", "disk_interface": "virtio", "vm_name": "image.img", "qemuargs": [ ["-drive", "file=output/image.img,if=virtio,cache=writeback,discard=ignore,format=qcow2"], ["-drive", "if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd"] ], "memory": "2048", "vnc_bind_address": "0.0.0.0", "disk_image": true, "iso_checksum": "{{user `iso_checksum` }}", "iso_url": "{{user `iso_url` }}", "iso_checksum_type": "sha256" } ], "provisioners": [ { "type": "file", "source": "{{user `tmp_directory`}}/scripts", "destination": "/tmp/scripts" }, { "type": "shell", "inline": [ "sudo chown root: /tmp/scripts/*", "sudo chmod +x /tmp/scripts/*", "sudo risotto-run-parts /tmp/scripts/" ] } ], "post-processors": [ { "type": "shell-local", "inline": [ "sleep 5", "mkdir -p {{user `tmp_directory`}}/tmp", "echo 'Syst Prep'", "LIBGUESTFS_BACKEND=direct virt-sysprep --delete \"/var/*\" --delete \"/home/*\" -a {{user `tmp_directory`}}/output/image.img", "echo 'Sparsify before shink'", "LIBGUESTFS_BACKEND=direct virt-sparsify --check-tmpdir=ignore --tmp {{user `tmp_directory`}}/tmp/ {{user `tmp_directory`}}/output/image.img {{user `tmp_directory`}}/output/sparse.img", "echo 'Shink'", "guestfish add {{user `tmp_directory`}}/output/sparse.img : run : resize2fs-M /dev/sda2", "truncate -s $(virt-df {{user `tmp_directory`}}/output/sparse.img --csv|tail -n +2|awk -F, '{x+=$3}END{print x + 16384}')K {{user `tmp_directory`}}/output/shrink.img", "virt-resize --shrink /dev/sda2 {{user `tmp_directory`}}/output/sparse.img {{user `tmp_directory`}}/output/shrink.img", "echo 'Sparsify and convert to qcow2'", "LIBGUESTFS_BACKEND=direct virt-sparsify --check-tmpdir=ignore --tmp {{user `tmp_directory`}}/tmp/ --compress --convert qcow2 {{user `tmp_directory`}}/output/shrink.img {{user `tmp_directory`}}/image.img", "echo 'SHASUM'", "sha256sum {{user `tmp_directory`}}/image.img > {{user `tmp_directory`}}/image.sha256", "rm -rf {{user `tmp_directory`}}/tmp {{user `tmp_directory`}}/output" ] } ] }