=========================================
Bareon-based deployment driver for Ironic
=========================================

``bareon_ironic`` package adds support for Bareon to OpenStack Ironic.
Ironic [#]_ is baremetal provisioning service with support of multiple hardware
types. Ironic architecture is able to work with deploy agents. Deploy agent
is a service that does provisioning tasks on the node side. Deploy agent is
integrated into bootstrap ramdisk image.
``bareon_ironic`` contains pluggable drivers code for Ironic that uses
Bareon [#]_ as deploy agent. Current implementation requires and tested with
Ironic/Nova Stable Kilo release.

Features overview
=================

Flexible deployment configuration
---------------------------------
A JSON called deploy_config carries partitions schema, partitioning behavior,
images schema, various deployment args. It can be passed through various
places like nova VM metadata, image metadata, node metadata etc. Resulting
JSON is a result of merge operation, that works basing on the priorities
configureed in ``/etc/ironic/ironic.conf``.

LVM support
-----------
Configuration JSON allows to define schemas with mixed partitions and logical
volumes.

Multiple partitioning behaviors available
-----------------------------------------

- Verify. Reads schema from the baremetal hardware and compares with user
  schema.
- Verify+clean. Compares baremetal schema with user schema, wipes particular
  filesystems basing on the user schema.
- Clean. Wipes disk, deploys from scratch.

Multiple image deployment
-------------------------

Configuration JSON allows to define more than 1 image. The Bareon Ironic driver
provides handles to switch between deployed images. This allows to perform a
baremetal node upgrades with minimal downtime.

Block-level copy & file-level Image deployment
----------------------------------------------

Bareon Ironic driver allows to do both: bare_swift drivers for block-level and
bare_rsync drivers for file-level.

Deployment termination
----------------------

The driver allows to teminate deployment in both silent (wait-callback) and
active (deploying) phases.

Post-deployment hooks
---------------------

Two hook mechanisms available: on_fail_script and deploy actions. The first one
is a user-provided shell script which is executed inside the deploy ramdisk if
deployment has failed. The latter is a JSON-based, allows to define various
actions with associated resources and run them after the deployment has passed.


Building HTML docs
==================

$ pip install sphinx
$ cd bareon-ironic/doc && make html


.. [#] https://wiki.openstack.org/wiki/Ironic
.. [#] https://wiki.openstack.org/wiki/Bareon