.. _XenServer-guide:

==================
XenServer in Kolla
==================

Overview
========

Kolla can deploy the OpenStack services on XenServer hosts by choosing
``xenapi`` as the compute virt driver.

In XenServer, there is a privileged domain which is known as dom0;
and it can run a number of un-privileged domains which are known as
domUs or VMs.

Most OpenStack services (e.g. Keystone, Glance, Horizon) can run either
in the XenServer VMs or in separate baremetal hosts, but some services
(which make direct use of the hypervisor) must run in the XenServer VMs.
These services will interact with the XenServer host via XenAPI to perform
privileged operations. See the following list for such kind of services:

* ``nova-compute``

* ``neutron-openvswitch-agent-xenapi``

* ``ceilometer-compute``


.. note::

   At the moment, only CentOS 7.x has been tested.

Preparation for compute node on XenServer hosts
===============================================

We need some bootstrap tasks particularly for XenAPI compute nodes. The
tasks are implemented in the package of ``python-os-xenapi`` and exposed
to kolla-ansible via a single command - ``xenapi_bootstrap``. This package
is contained in the ``RDO CloudSIG repository`` [`RDO repos`_] and will be
installed on compute nodes at nova deployment. So we need ensure this
repository is reachable from the compute nodes or cache the repository
locally.

Create a compute VM on each XenServer host which will be used to boot
instances on. The VM must meet the common requirements declared by
kolla-ansible for KVM/QEMU deployment.

Additionally you should install PV driver in the VM [`XenServer documents`_];
and create the HIMN(Host Internal Management Network) for each compute VM
by following these steps:

1. In XenCenter, from the menu choose "View ->  Hidden Objects";

2. You will see HIMN in the host's 'Networking' page;

3. Create an interface on HIMN for the compute VM.

The remaining instructions are just the same as the preparations for
KVM/QEMU deployment.

Deployment
----------

Enable the virt type ``xenapi`` and configure connection options in
``/etc/kolla/globals.yml``:

.. code-block:: yaml

    nova_compute_virt_type: "xenapi"
    xenserver_username: "root"
    xenserver_connect_protocol: "https"

.. note::

    When using ``https`` as the connection protocol, please refer XenServer
    user document to setup the signed SSL certificates to allow the secure
    communications between dom0 and domU. Otherwise, please use ``http`` for
    self-signed certificates.

You also need set the password for xenserver_username in
``/etc/kolla/passwords.yml``:

.. code-block:: yaml

    xenserver_password: "root_password"

Then you can start kolla-ansible deployment just following the general
deployment instructions [`Quick Start`_].

References
==========

For more information on XenAPI OpenStack, see:

XenAPI OpenStack: https://docs.openstack.org/nova/latest/admin/configuration/hypervisor-xen-api.html

.. _RDO repos: https://www.rdoproject.org/what/repos/

.. _XenServer documents: https://docs.citrix.com/en-us/xenserver/current-release.html

.. _Quick Start: https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
