[openstack-dev] [Nova][Heat] scheduled-images blueprint

Gabe Westmaas gabe.westmaas at RACKSPACE.COM
Wed May 1 17:10:35 UTC 2013


On May 1, 2013, at 6:50 AM, Steven Hardy <shardy at redhat.com>
 wrote:

> On Wed, May 01, 2013 at 04:43:34PM +1000, Angus Salkeld wrote:
>> On 30/04/13 15:23 -0400, Russell Bryant wrote:
>>> Greetings,
>>> 
>>> The following blueprint was proposed for the havana series:
>>> 
>>>  https://blueprints.launchpad.net/nova/+spec/scheduled-images
>>> 
>>> Based on the current design, I think the nova part of this needs to be
>>> deferred.  It does not seem appropriate to add an API extension that
>>> talks to a service that is not an integrated project, or at least incubated.
>>> 
>>> Beyond that, I'm curious about the choice to implement this as a new
>>> service.  I definitely agree that this is not something that should be
>>> implemented inside of Nova.  However, I wonder if it makes sense as a
>>> feature in Heat.  It seems like an orchestration feature.
>> 
>> I'll point out some blueprints in a similar realm:
>> 
>> 1) https://blueprints.launchpad.net/heat/+spec/stack-snapshot
>>   This is to snapshot the whole stack which is quite chalanging. But
>>   this together with a periodic/workflow service could give you the
>>   same functionality.
> 
> Yes, as Angus says, this appears to cover some of the same/similar
> functionality - I've not yet got into the details on this, but if we can
> make it work it should be a pretty cool feature IMO :)
> 
> Basic idea is:
> - Provide interface which allows a coordinated point-in-time snapshot of
>  all Heat stack resources (e.g heat stack-snapshot mystack)
> - This would snapshot the Heat template, all resource metadata, all
>  instances, attached volumes, and state of any other resources where
>  applicable.
> - We'd use something similar to our existing Rollback functionality, to
>  allow reverting a stack to a previous snapshot
> 
> Obviously the challenge here will be providing some way of getting an
> "atomic" snapshot when we'll be sending lots of individual API calls to do
> the snapshots.  Initially I think this will be impossible, so we can get
> the orchestration of non-atomic snapshots working, then consider if e.g the
> nova group-scheduling idea could be extended such that you could specify a
> co-ordinated snapshot of groups of instances.

Hey Steven,

It makes total sense to me to provide a way to snapshot an entire stack.  I would just say there is no reason to push scheduling into Heat.  Lets keep that separate, and have it "snapshot" a stack at a particular time, if that use case makes sense.  It does  seem to me though that there is a difference between using Heat to define what you want a stack to look like at a given point in time, and a workflow that uses the various APIs to accomplish its goal.  There is a proposal up for such a workflow service that can follow complicated logic to make decisions about what to do (https://wiki.openstack.org/wiki/Convection) and it makes a lot of sense to use an eventual service like this to achieve various goals, including both relatively simple snapshots of servers and complicated snapshots of entire stacks.

Gabe

> 
>> 2) https://blueprints.launchpad.net/heat/+spec/instance-resize-update-stack
>>   implement UpdateStack support for the InstanceType property,
>>   such that an instance can be resized after it has been launched.
>> 3) https://blueprints.launchpad.net/heat/+spec/rolling-updates
>>   Roll out changes in topology and/or configuration to a limited
>>   percentage of these instances and then wait to see if those initial
>>   rollouts produced failures or successes before deploying a larger
>>   percentage.
> 
> rolling-updates is more to do with phased rollout of new resource
> (instance) metadata AFAIK, so probably not that useful in the context of
> backups?
> 
> There is also https://blueprints.launchpad.net/heat/+spec/volume-snapshots
> which I guess could be relevant
> 
>> Not sure if _everyone_ wants (or should be forced) to use Heat?
>> 
>> It comes down to where we want the seperation of duties. Currently
>> when in doubt put-it-in-nova... Lucky you;)
>> 
>> One way to implement this in Heat would be to have a Resource type
>> provided by https://github.com/rackspace-titan/qonos/ (or similar)
>> that can do the scheduling/snapshotting:
>> 
>> "my_cool_server" {
>>  "Type": "AWS::EC2::Instance",
>>  ... bla bla ...
>> },
>> MyBackups {
>>  "Type": "OS::QONOS::TimedServerSnapshot",
>>  "Properties": {
>>    "Servers": [{"Ref": "my_cool_server"}],
>>    "PeriodInHours": 24
>>  }
>> }
>> 
>> In the TimedServerSnapshot resource plugin we could send a job to qonos to run the
>> snapshot. - Just an idea.
> 
> Interesting.  I guess another idea along similar lines is to add a resource
> definition to the snapshot features mentioned above, such that you could
> let heat (which already has to handle periodic tasks) trigger periodic
> snapshots in addition to supporting user-triggered snapshots via the API.
> 
> Steve
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list