Merge "Add rsync image deployment spec"
This commit is contained in:
commit
89b2491e1e
87
specs/rsync-image-deployment.rst
Normal file
87
specs/rsync-image-deployment.rst
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
..
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
======================
|
||||||
|
Rsync image deployment
|
||||||
|
======================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/bareon/+spec/rsync-image-deployment
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Current version of bareon agent deploys an image on block-device level. Thus
|
||||||
|
an image can be deployed only to a single partition. Usually the provided
|
||||||
|
image is a single partition, however it has dirs like /usr or /var inside,
|
||||||
|
that could map to a provided partition schema. To achieve this on the current
|
||||||
|
agent we would need to upload multiple images - one per partition.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
NOTE: This is a contribution of the feature developed within Cray OpenStack project.
|
||||||
|
We are trying to make as minimum changes to existing code as possible.
|
||||||
|
|
||||||
|
We propose to use rsync to transfer the image to a baremetal node. Rsync server
|
||||||
|
might be an Ironic Conductor (If Ironic is used), or any other calling server
|
||||||
|
accessible from the baremetal node. Rsync does file-level copying, thus allows
|
||||||
|
to deploy an image across partitions. This would also allow incremental
|
||||||
|
image-updates.
|
||||||
|
|
||||||
|
To achieve this we are splitting the new kind of driver - deploy driver:
|
||||||
|
provision --data-driver <ironic|nailgun> --deploy_driver <swift|rsync>
|
||||||
|
|
||||||
|
Deploy driver is basically a manager (on the current code base) converted to a
|
||||||
|
driver. Abstract driver would include:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def do_partitioning(self):
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def do_configdrive(self):
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def do_copyimage(self):
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def do_reboot(self):
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def do_provisioning(self):
|
||||||
|
|
||||||
|
And every deploy driver will add their own implementation of these. Currently
|
||||||
|
we are moving most of the code to base driver, differentiating only do_copyimage
|
||||||
|
method (rsync VS swift).
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
- max_lobur
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
See blueprint ref above.
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
- rebase onto Bareon master.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None.
|
Loading…
x
Reference in New Issue
Block a user