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?