85 lines
2.7 KiB
ReStructuredText
85 lines
2.7 KiB
ReStructuredText
.. _libvirt:
|
|
|
|
###############
|
|
Libvirt drivers
|
|
###############
|
|
|
|
Overview
|
|
========
|
|
|
|
This driver implements Power/Management interfaces for virtual baremetal
|
|
hardware and is based on Libvirt [1]_ library and its Python interface.
|
|
Thus it is suited **for testing environments only**.
|
|
|
|
It performs considerably better that Ironic's SSH driver, especially when
|
|
there are many virtual baremetal nodes placed on hypervizor [2]_.
|
|
It also supports additional connection transports, including TCP with SASL
|
|
authentication that can be considered as secure alternative to SSH.
|
|
|
|
Known drawbacks in comparison to Ironic's SSH driver are:
|
|
|
|
- no support for user+password SSH authentication
|
|
- some use cases possible with SSH driver are not supported
|
|
|
|
- e.g. managing VirtualBox VMs on a Windows host from Linux guest
|
|
|
|
Setting up the environment
|
|
==========================
|
|
|
|
#. Install Ironic
|
|
#. Install ironic-staging-drivers
|
|
#. Install ``libvirt-python``
|
|
|
|
* When installing from PyPI, you'd need development version of
|
|
``libvirt`` package from your distribution
|
|
(e.g. ``libvirt-dev`` in Ubuntu, ``libvirt-devel`` in Fedora)
|
|
and all the usual Python packages required to compile C-extensions
|
|
in your system
|
|
(on DevStack, those are already installed when nova-compute is enabled).
|
|
|
|
#. Add ``staging-libvirt`` to the list of ``enabled_hardware_types``
|
|
in ironic.conf, configure the power and management interfaces, for example::
|
|
|
|
[DEFAULT]
|
|
enabled_hardware_types = staging-libvirt
|
|
enabled_management_interfaces = staging-libvirt
|
|
enabled_power_interfaces = staging-libvirt
|
|
|
|
Then restart the ironic-conductor service.
|
|
#. Create or update existing virtual baremetal nodes to use one of
|
|
libvirt-based drivers enabled in the previous step.
|
|
#. Update node properties with driver-specific fields if needed.
|
|
(see `Node driver_info`_).
|
|
Default values are suitable for single-node DevStack.
|
|
#. Deploy the node.
|
|
|
|
Node driver_info
|
|
----------------
|
|
|
|
libvirt_uri
|
|
(optional) Libvirt URI to connect to.
|
|
Default is ``qemu+unix:///system``.
|
|
|
|
ssh_key_filename
|
|
(optional) File name of private SSH key when using ``qemu+ssh://``
|
|
transport.
|
|
The file must have appropriate permissions for the user running
|
|
ironic-conductor service.
|
|
Default is to use default SSH keys for that user.
|
|
Note that for private keys with password those must be pre-loaded into
|
|
``ssh-agent``.
|
|
|
|
sasl_username
|
|
username to authenticate as.
|
|
Required when using TCP transport with SASL authentication.
|
|
|
|
sasl_password
|
|
password to use for SASL authentication.
|
|
Required when using TCP transport with SASL authentication.
|
|
|
|
References
|
|
==========
|
|
|
|
.. [1] https://libvirt.org
|
|
.. [2] https://github.com/pshchelo/ironic_libvirt_vs_virsh
|