Remote automated provisioning to a XenServer Hypervisor

I'm currently working on a project where I use Vagrant with Ansible provisioning to create local environments in VirtualBox. I'm currently working with a University and we have a XenServer Hypervisor (free edition). I can't access the hypervisor directly from my location, but I can ssh into a Ubuntu server on the same network and forward ports so I can connect to it with XenCenter:

ssh <remote machine> -L80:<xen-server>:80 -L443:<xen-server>:443 -L5900:<xenserver>:5900 -L59001...etc to 5910

The 59xx ports are because XenCenter puts VNC Consoles on those ports. (I'm actually using putty on Windows because I can't get OpenXenCenter/Linux to connect at all with this type of tunnel). Citrix XenCenter connects fine and I can create a new VM, but I cannot get to the console, either via XenCenter or another VNC client.

If I could get the VNC console to work, I could create a base box and just copy it and re-provision the copies with different ansible playbooks as needed.

But I really don't care about being able to get a console so long as I could auto-provision the individual VMs. It'd be nice if I could point at the hypervisor with a client on another machine and script the creation of VMs with specific IP addresses. Vagrant doesn't support Xen as a provider. I've found some limited Xen support using libvirt, but even that seems to be more geared at Xen installed on a standard distribution like Ubuntu or OpenSUSE and not as the standalone Citrix Hypervisor. There is xen-tools, but that seems to also be geared on xen on a local linux distribution.

Is there anyway to remotely provision XenServer instances using either Vagrant or some other type of provisioning tool?


For the next guy looking into this:

The solution is to read the XenServer guest installation guide and use a search engine. ;)

First, there's a ansible playbook with nice documentation for setting up VMs in XenServer.

It's not a full vagrant provider and maybe not easy enough for beginners but it covers all the basics.

http://sharknet.us/2013/12/13/276/

Secondly, a "real" vagrant provider is available at

https://github.com/jonludlam/vagrant-xenserver