2013-09-02 23:23:52 -04:00
|
|
|
---
|
2018-04-13 22:48:19 -04:00
|
|
|
modeline: |
|
|
|
|
vim: set ft=pandoc:
|
2017-06-14 21:04:16 -04:00
|
|
|
description: |
|
|
|
|
The Qemu Packer builder is able to create KVM and Xen virtual machine images.
|
2015-07-22 22:31:00 -04:00
|
|
|
layout: docs
|
2017-06-14 21:04:16 -04:00
|
|
|
page_title: 'QEMU - Builders'
|
|
|
|
sidebar_current: 'docs-builders-qemu'
|
2017-03-25 18:13:52 -04:00
|
|
|
---
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2013-11-05 18:34:09 -05:00
|
|
|
# QEMU Builder
|
2013-09-02 23:23:52 -04:00
|
|
|
|
|
|
|
Type: `qemu`
|
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
The Qemu Packer builder is able to create [KVM](http://www.linux-kvm.org) and
|
2017-09-29 15:42:32 -04:00
|
|
|
[Xen](http://www.xenproject.org) virtual machine images.
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
The builder builds a virtual machine by creating a new virtual machine from
|
|
|
|
scratch, booting it, installing an OS, rebooting the machine with the boot media
|
|
|
|
as the virtual hard drive, provisioning software within the OS, then shutting it
|
|
|
|
down. The result of the Qemu builder is a directory containing the image file
|
|
|
|
necessary to run the virtual machine on KVM or Xen.
|
2013-09-02 23:23:52 -04:00
|
|
|
|
|
|
|
## Basic Example
|
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
Here is a basic example. This example is functional so long as you fixup paths
|
|
|
|
to files, URLS for ISOs and checksums.
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
``` json
|
2013-09-02 23:23:52 -04:00
|
|
|
{
|
|
|
|
"builders":
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"type": "qemu",
|
2018-03-28 14:22:20 -04:00
|
|
|
"iso_url": "http://mirror.raystedman.net/centos/6/isos/x86_64/CentOS-6.9-x86_64-minimal.iso",
|
|
|
|
"iso_checksum": "af4a1640c0c6f348c6c41f1ea9e192a2",
|
2013-09-02 23:23:52 -04:00
|
|
|
"iso_checksum_type": "md5",
|
|
|
|
"output_directory": "output_centos_tdhtest",
|
2018-07-09 07:46:15 -04:00
|
|
|
"shutdown_command": "echo 'packer' | sudo -S shutdown -P now",
|
2019-10-14 16:08:59 -04:00
|
|
|
"disk_size": 5000,
|
2013-09-02 23:23:52 -04:00
|
|
|
"format": "qcow2",
|
|
|
|
"accelerator": "kvm",
|
2018-10-16 12:42:35 -04:00
|
|
|
"http_directory": "path/to/httpdir",
|
2013-09-02 23:23:52 -04:00
|
|
|
"ssh_username": "root",
|
|
|
|
"ssh_password": "s0m3password",
|
2018-10-16 12:42:35 -04:00
|
|
|
"ssh_timeout": "20m",
|
2013-09-02 23:23:52 -04:00
|
|
|
"vm_name": "tdhtest",
|
2013-10-09 08:11:10 -04:00
|
|
|
"net_device": "virtio-net",
|
2013-09-03 11:08:04 -04:00
|
|
|
"disk_interface": "virtio",
|
2018-10-16 12:42:35 -04:00
|
|
|
"boot_wait": "10s",
|
2017-03-25 18:13:52 -04:00
|
|
|
"boot_command": [
|
2014-06-20 08:14:15 -04:00
|
|
|
"<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/centos6-ks.cfg<enter><wait>"
|
2013-09-02 23:23:52 -04:00
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
2014-10-20 13:55:16 -04:00
|
|
|
```
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2018-10-16 12:42:35 -04:00
|
|
|
This is an example only, and will time out waiting for SSH because we have not
|
|
|
|
provided a kickstart file. You must add a valid kickstart file to the
|
|
|
|
"http_directory" and then provide the file in the "boot_command" in order for
|
|
|
|
this build to run. We recommend you check out the
|
|
|
|
[Community Templates](https://www.packer.io/community-tools.html#templates)
|
|
|
|
for a practical usage example.
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2016-05-20 13:01:41 -04:00
|
|
|
Note that you will need to set `"headless": true` if you are running Packer
|
|
|
|
on a Linux server without X11; or if you are connected via ssh to a remote
|
|
|
|
Linux server and have not enabled X11 forwarding (`ssh -X`).
|
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
## Qemu Specific Configuration Reference
|
|
|
|
|
|
|
|
There are many configuration options available for the builder. In addition to
|
|
|
|
the items listed here, you will want to look at the general configuration
|
|
|
|
references for [ISO](#iso-configuration),
|
|
|
|
[HTTP](#http-directory-configuration),
|
|
|
|
[Floppy](#floppy-configuration),
|
|
|
|
[Boot](#boot-configuration),
|
|
|
|
[Shutdown](#shutdown-configuration),
|
|
|
|
[Communicator](#communicator-configuration)
|
|
|
|
configuration references, which are
|
|
|
|
necessary for this build to succeed and can be found further down the page.
|
|
|
|
|
|
|
|
### Optional:
|
|
|
|
|
|
|
|
<%= partial "partials/builder/qemu/Config-not-required" %>
|
2019-06-12 12:38:37 -04:00
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
## ISO Configuration
|
2019-06-12 12:38:37 -04:00
|
|
|
|
|
|
|
<%= partial "partials/common/ISOConfig" %>
|
|
|
|
|
2014-05-04 13:47:40 -04:00
|
|
|
### Required:
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2019-06-12 12:38:37 -04:00
|
|
|
<%= partial "partials/common/ISOConfig-required" %>
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2014-05-04 13:47:40 -04:00
|
|
|
### Optional:
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2019-06-12 12:38:37 -04:00
|
|
|
<%= partial "partials/common/ISOConfig-not-required" %>
|
2018-01-31 15:45:38 -05:00
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
## Http directory configuration
|
2019-06-13 05:18:04 -04:00
|
|
|
|
|
|
|
<%= partial "partials/common/HTTPConfig" %>
|
|
|
|
### Optional:
|
|
|
|
|
|
|
|
<%= partial "partials/common/HTTPConfig-not-required" %>
|
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
## Floppy configuration
|
2019-06-13 08:29:25 -04:00
|
|
|
|
|
|
|
<%= partial "partials/common/FloppyConfig" %>
|
|
|
|
|
|
|
|
### Optional:
|
|
|
|
|
|
|
|
<%= partial "partials/common/FloppyConfig-not-required" %>
|
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
## Shutdown configuration
|
2018-04-25 10:50:58 -04:00
|
|
|
|
2019-06-12 12:38:37 -04:00
|
|
|
### Optional:
|
2018-12-26 01:49:42 -05:00
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
<%= partial "partials/common/shutdowncommand/ShutdownConfig-not-required" %>
|
|
|
|
|
|
|
|
|
|
|
|
## Boot Configuration
|
2015-07-22 23:25:58 -04:00
|
|
|
|
2019-06-13 10:08:15 -04:00
|
|
|
<%= partial "partials/common/bootcommand/VNCConfig" %>
|
|
|
|
<%= partial "partials/common/bootcommand/BootConfig" %>
|
2015-07-22 23:25:58 -04:00
|
|
|
|
2019-06-13 10:08:15 -04:00
|
|
|
### Optional:
|
|
|
|
<%= partial "partials/common/bootcommand/VNCConfig-not-required" %>
|
|
|
|
<%= partial "partials/common/bootcommand/BootConfig-not-required" %>
|
2013-09-02 23:23:52 -04:00
|
|
|
|
2016-12-20 20:22:47 -05:00
|
|
|
|
2019-06-19 09:57:58 -04:00
|
|
|
### Communicator Configuration
|
|
|
|
|
|
|
|
#### Optional:
|
|
|
|
|
|
|
|
<%= partial "partials/helper/communicator/Config-not-required" %>
|
|
|
|
|
2017-10-12 01:58:03 -04:00
|
|
|
|
2016-12-20 20:22:47 -05:00
|
|
|
### Troubleshooting
|
|
|
|
|
|
|
|
Some users have experienced errors complaining about invalid keymaps. This
|
|
|
|
seems to be related to having a `common` directory or file in the directory
|
|
|
|
they've run Packer in, like the packer source directory. This appears to be an
|
|
|
|
upstream bug with qemu, and the best solution for now is to remove the
|
|
|
|
file/directory or run in another directory.
|
2018-03-09 18:33:28 -05:00
|
|
|
|
|
|
|
Some users have reported issues with incorrect keymaps using qemu version 2.11.
|
|
|
|
This is a bug with qemu, and the solution is to upgrade, or downgrade to 2.10.1
|
|
|
|
or earlier.
|