2014-11-10 12:20:39 -06:00
# XenServer packer.io builder
This builder plugin extends packer.io to support building images for XenServer.
You can check out packer [here ](https://packer.io ).
2014-11-21 11:49:20 -06:00
## Dependencies
* Packer >= 0.7.2 (https://packer.io)
* XenServer > 6.2 (http://xenserver.org)
* Golang (tested with 1.2.1)
## Install Go
Follow these instructions and install golang on your system:
* https://golang.org/doc/install
## Install Packer
2015-01-02 07:47:29 -06:00
Clone the Packer repository:
2014-11-21 11:49:20 -06:00
```shell
2015-01-02 07:47:29 -06:00
git clone https://github.com/mitchellh/packer.git
2014-11-21 11:49:20 -06:00
```
2015-01-02 07:47:29 -06:00
Then follow the [instructions to build and install a development version of Packer ](https://github.com/mitchellh/packer#developing-packer ).
2014-11-21 11:49:20 -06:00
## Compile the plugin
Once you have installed Packer, you must compile this plugin and install the
resulting binary.
```shell
cd $GOROOT
mkdir -p src/github.com/rdobson/
cd src/github.com/rdobson
git clone https://github.com/rdobson/packer-builder-xenserver.git
cd packer-builder-xenserver
./build.sh
```
2015-01-02 07:47:29 -06:00
If the build is successful, you should now have a `packer-builder-xenserver` binary
in your `$GOPATH/bin` directory and you are ready to get going with packer.
2014-11-21 11:49:20 -06:00
2015-01-07 09:41:34 -06:00
In order to do a cross-compile, run instead:
```shell
XC_OS="windows linux" XC_ARCH="386 amd64" ./build.sh
```
This builds 32 and 64 bit binaries for both Windows and Linux. Native binaries will be installed in `$GOPATH/bin` as above, and cross-compiled ones in the `pkg/` directory.
Don't forget to also cross compile Packer, by running
```shell
XC_OS="windows linux" XC_ARCH="386 amd64" make bin
```
(instead of `make dev` ) in the directory where you checked out Packer.
## CentOS 6.6 Example
2014-11-21 11:49:20 -06:00
Once you've setup the above, you are good to go with an example.
2015-01-02 09:43:12 -06:00
To get you started, there is an example config file which you can use:
[`examples/centos-6.6.json` ](https://github.com/rdobson/packer-builder-xenserver/blob/master/examples/centos-6.6.json )
The example is functional, once suitable `remote_host` , `remote_username` and
`remote_password` configurations have been substituted.
A brief explanation of what the config parameters mean:
* `type` - specifies the builder type. This is 'xenserver-iso', for installing
a VM from scratch, or 'xenserver-xva' to import existing XVA as a starting
point.
* `remote_username` - the username for the XenServer host being used.
* `remote_password` - the password for the XenServer host being used.
* `remote_host` - the IP for the XenServer host being used.
* `vm_name` - the name that should be given to the created VM.
* `vm_memory` - the static memory configuration for the VM, in MB.
* `disk_size` - the size of the disk the VM should be created with, in MB.
* `iso_name` - the name of the ISO visible on a ISO SR connected to the XenServer host.
2014-11-21 11:49:20 -06:00
* `http_directory` - the path to a local directory to serve up over http.
* `ssh_username` - the username set by the installer for the instance.
* `ssh_password` - the password set by the installer for the instance.
2015-01-02 09:43:12 -06:00
* `boot_command` - a list of commands to be sent to the instance over VNC.
2014-11-21 11:49:20 -06:00
2015-01-02 09:43:12 -06:00
Note, the `http_directory` parameter is only required if you
want Packer to serve up files over HTTP. In this example, the templated variables
`{{ .HTTPIP }}` and `{{ .HTTPPort }}` will be substituted for the local IP and
the port that Packer starts its HTTP service on.
2014-11-21 11:49:20 -06:00
Once you've updated the config file with your own parameters, you can use packer
2015-01-02 09:43:12 -06:00
to build this VM with the following command:
2014-11-21 11:49:20 -06:00
```
2015-01-02 09:43:12 -06:00
packer build centos-6.6.json
2014-11-21 11:49:20 -06:00
```
2015-01-02 09:43:12 -06:00
# Documentation
For complete documentation on configuration commands, see either [the
xenserver-iso docs](https://github.com/rdobson/packer-builder-xenserver/blob/master/docs/builders/xenserver-iso.html.markdown) or [the xenserver-xva docs ](https://github.com/rdobson/packer-builder-xenserver/blob/master/docs/builders/xenserver-xva.html.markdown ).