Ganeti quick installation guide
===============================

Please note that a more detailed installation procedure is described in
the :doc:`install`. Refer to it if you are setting up Ganeti the first time.
This quick installation guide is mainly meant as reference for experienced
users. A glossary of terms can be found in the :doc:`glossary`.


Software Requirements
---------------------

.. highlight:: shell-example

Before installing, please verify that you have the following programs:

- `Xen Hypervisor <http://www.xen.org/>`_, version 3.0 or above, if
  running on Xen
- `KVM Hypervisor <http://www.linux-kvm.org>`_, version 72 or above, if
  running on KVM. In order to use advanced features, such as live
  migration, virtio, etc, an even newer version is recommended (qemu-kvm
  versions 0.11.X and above have shown good behavior).
- `DRBD <http://www.drbd.org/>`_, kernel module and userspace utils,
  version 8.0.7 or above, up to 8.4.x.
- `RBD <http://ceph.newdream.net/>`_, kernel modules
  (``rbd.ko``/``libceph.ko``) and userspace utils (``ceph-common``)
- `LVM2 <http://sourceware.org/lvm2/>`_
- `OpenSSH <http://www.openssh.com/portable.html>`_
- `bridge utilities <http://www.linuxfoundation.org/en/Net:Bridge>`_
- `iproute2 <http://www.linuxfoundation.org/en/Net:Iproute2>`_
- `arping <http://www.skbuff.net/iputils/>`_ (part of iputils)
- `ndisc6 <http://www.remlab.net/ndisc6/>`_ (if using IPv6)
- `Python <http://www.python.org/>`_, version 2.6 or above, not 3.0
- `Python OpenSSL bindings <http://pyopenssl.sourceforge.net/>`_
- `simplejson Python module <http://code.google.com/p/simplejson/>`_
- `pyparsing Python module <http://pyparsing.wikispaces.com/>`_, version
  1.4.6 or above
- `pyinotify Python module <https://github.com/seb-m/pyinotify>`_
- `PycURL Python module <http://pycurl.sourceforge.net/>`_
- `socat <http://www.dest-unreach.org/socat/>`_, see :ref:`note
  <socat-note>` below
- `Paramiko <http://www.lag.net/paramiko/>`_, if you want to use
  ``ganeti-listrunner``
- `psutil Python module <https://github.com/giampaolo/psutil>`_,
  optional python package for supporting CPU pinning under KVM, versions
  2.x.x only; beware that versions from 2.0.0 to before 2.2.0 had a
  number of file handle leaks, so running at least 2.2.0 is advised
- `fdsend Python module <https://gitorious.org/python-fdsend>`_,
  optional Python package for supporting NIC hotplugging under KVM
- `qemu-img <http://qemu.org/>`_, if you want to use ``ovfconverter``
- `fping <http://fping.sourceforge.net/>`_
- `Python IP address manipulation library
  <http://code.google.com/p/ipaddr-py/>`_
- `Bitarray Python library <http://pypi.python.org/pypi/bitarray/>`_
- `GNU Make <http://www.gnu.org/software/make/>`_
- `GNU M4 <http://www.gnu.org/software/m4/>`_

These programs are supplied as part of most Linux distributions, so
usually they can be installed via the standard package manager. Also
many of them will already be installed on a standard machine. On
Debian/Ubuntu, you can use this command line to install all required
packages, except for RBD, DRBD and Xen::

  $ apt-get install lvm2 ssh bridge-utils iproute iputils-arping make m4 \
                    ndisc6 python python-openssl openssl \
                    python-pyparsing python-simplejson python-bitarray \
                    python-pyinotify python-pycurl python-ipaddr socat fping

Note that the previous instructions don't install optional packages.
To install the optional package, run the following line.::

  $ apt-get install python-paramiko python-psutil qemu-utils

If some of the python packages are not available in your system,
you can try installing them using ``easy_install`` command.
For example::

  $ apt-get install python-setuptools python-dev
  $ cd / && easy_install \
            psutil \
            bitarray \
            ipaddr


On Fedora to install all required packages except RBD, DRBD and Xen::

  $ yum install openssh openssh-clients bridge-utils iproute ndisc6 make \
                pyOpenSSL pyparsing python-simplejson python-inotify \
                python-lxm socat fping python-bitarray python-ipaddr

For optional packages use the command::

  $ yum install python-paramiko python-psutil qemu-img

If you want to build from source, please see doc/devnotes.rst for more
dependencies.

.. _socat-note:
.. note::
  Ganeti's import/export functionality uses ``socat`` with OpenSSL for
  transferring data between nodes. By default, OpenSSL 0.9.8 and above
  employ transparent compression of all data using zlib if supported by
  both sides of a connection. In cases where a lot of data is
  transferred, this can lead to an increased CPU usage. Additionally,
  Ganeti already compresses all data using ``gzip`` where it makes sense
  (for inter-cluster instance moves).

  To remedey this situation, patches implementing a new ``socat`` option
  for disabling OpenSSL compression have been contributed and will
  likely be included in the next feature release. Until then, users or
  distributions need to apply the patches on their own.

  Ganeti will use the option if it's detected by the ``configure``
  script; auto-detection can be disabled by explicitly passing
  ``--enable-socat-compress`` (use the option to disable compression) or
  ``--disable-socat-compress`` (don't use the option).

  The patches and more information can be found on
  http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html.

Haskell requirements
~~~~~~~~~~~~~~~~~~~~

Starting with Ganeti 2.7, the Haskell GHC compiler and a few base
libraries are required in order to build Ganeti (but not to run and
deploy Ganeti on production machines). More specifically:

- `GHC <http://www.haskell.org/ghc/>`_ version 7 or higher
- or even better, `The Haskell Platform
  <http://hackage.haskell.org/platform/>`_ which gives you a simple way
  to bootstrap Haskell
- `cabal-install <http://hackage.haskell.org/package/json>`_ and
  `Cabal <http://hackage.haskell.org/package/json>`_, the Common Architecture
  for Building Haskell Applications and Libraries (executable and library)
- `json <http://hackage.haskell.org/package/json>`_, a JSON library
- `network <http://hackage.haskell.org/package/network>`_, a basic
  network library
- `parallel <http://hackage.haskell.org/package/parallel>`_, a parallel
  programming library (note: tested with up to version 3.x)
- `bytestring <http://hackage.haskell.org/package/bytestring>`_ and
  `utf8-string <http://hackage.haskell.org/package/utf8-string>`_
  libraries; these usually come with the GHC compiler
- `text <http://hackage.haskell.org/package/text>`_
- `deepseq <http://hackage.haskell.org/package/deepseq>`_,
  usually comes with the GHC compiler
- `curl <http://hackage.haskell.org/package/curl>`_, tested with
  versions 1.3.4 and above
- `hslogger <http://software.complete.org/hslogger>`_, version 1.1 and
  above.
- `hinotify <http://hackage.haskell.org/package/hinotify>`_, tested with
  version 0.3.2
- `Crypto <http://hackage.haskell.org/package/Crypto>`_, tested with
  version 4.2.4
- `regex-pcre <http://hackage.haskell.org/package/regex-pcre>`_,
  bindings for the ``pcre`` library
- `attoparsec <http://hackage.haskell.org/package/attoparsec>`_,
  version 0.10 and above
- `vector <http://hackage.haskell.org/package/vector>`_
- `process <http://hackage.haskell.org/package/process>`_, version 1.0.1.1 and
  above; usually comes with the GHC compiler
- `base64-bytestring
  <http://hackage.haskell.org/package/base64-bytestring>`_,
  version 1.0.0.0 and above
- `lifted-base <http://hackage.haskell.org/package/lifted-base>`_,
  version 0.1.1 and above.
- `lens <http://hackage.haskell.org/package/lens>`_,
  version 3.10 and above.

Some of these are also available as package in Debian/Ubuntu::

  $ apt-get install ghc cabal-install libghc-cabal-dev \
                    libghc-json-dev libghc-network-dev \
                    libghc-parallel-dev \
                    libghc-utf8-string-dev libghc-curl-dev \
                    libghc-hslogger-dev \
                    libghc-crypto-dev libghc-text-dev \
                    libghc-hinotify-dev libghc-regex-pcre-dev \
                    libpcre3-dev \
                    libghc-attoparsec-dev libghc-vector-dev \
                    libghc-zlib-dev

Debian Jessie also includes recent enough versions of these libraries::

  $ apt-get install libghc-base64-bytestring-dev \
                    libghc-lens-dev \
                    libghc-lifted-base-dev

In Fedora, some of them are available via packages as well::

  $ yum install ghc ghc-json-devel ghc-network-devel \
                    ghc-parallel-devel ghc-deepseq-devel \
                    ghc-hslogger-devel ghc-text-devel \
                    ghc-regex-pcre-devel

The most recent Fedora doesn't provide ``crypto``, ``inotify``. So these
need to be installed using ``cabal``.

If using a distribution which does not provide these libraries, first
install the Haskell platform. Then run::

  $ cabal update

Then install the additional native libraries::

  $ apt-get install libpcre3-dev libcurl4-openssl-dev

And finally the libraries required for building the packages via ``cabal``
(it will automatically pick only those that are not already installed via your
distribution packages)::

  $ cabal install --only-dependencies cabal/ganeti.template.cabal

Haskell optional features
~~~~~~~~~~~~~~~~~~~~~~~~~

Optionally, more functionality can be enabled if your build machine has
a few more Haskell libraries enabled: the ``ganeti-confd`` daemon
(``--enable-confd``), the monitoring daemon (``--enable-monitoring``) and
the meta-data daemon (``--enable-metadata``).
The extra dependencies for these are:

- `snap-server` <http://hackage.haskell.org/package/snap-server>`_, version
  0.8.1 and above.
- `case-insensitive`
  <http://hackage.haskell.org/package/case-insensitive>`_, version
  0.4.0.1 and above (it's also a dependency of ``snap-server``).
- `PSQueue <http://hackage.haskell.org/package/PSQueue>`_,
  version 1.0 and above.

These libraries are available in Debian Wheezy or later, so you can use
either apt::

  $ apt-get install libghc-snap-server-dev libghc-psqueue-dev

or ``cabal``::

  $ cabal install --only-dependencies cabal/ganeti.template.cabal \
                  --flags="confd mond metad"

to install them.

.. _cabal-note:
.. note::
  Make sure that your ``~/.cabal/bin`` directory (or whatever else
  is defined as ``bindir``) is in your ``PATH``.

Installation of the software
----------------------------

To install, simply run the following command::

  $ ./configure --localstatedir=/var --sysconfdir=/etc && \
    make && \
    make install

This will install the software under ``/usr/local``. You then need to
copy ``doc/examples/ganeti.initd`` to ``/etc/init.d/ganeti`` and
integrate it into your boot sequence (``chkconfig``, ``update-rc.d``,
etc.). Also, Ganeti uses symbolic links in the sysconfdir to determine,
which of potentially many installed versions currently is used. If these
symbolic links should be added by the install as well, add the
option ``--enable-symlinks`` to the ``configure`` call.


Cluster initialisation
----------------------

Before initialising the cluster, on each node you need to create the
following directories:

- ``/etc/ganeti``
- ``/var/lib/ganeti``
- ``/var/log/ganeti``
- ``/srv/ganeti``
- ``/srv/ganeti/os``
- ``/srv/ganeti/export``

After this, use ``gnt-cluster init``.

.. vim: set textwidth=72 syntax=rst :
.. Local Variables:
.. mode: rst
.. fill-column: 72
.. End:
