Add high availability support to the deployment architecture

Registered by Steven Dake

At the moment the configuration files are read via file://. If the filesystem dies, the entire deployment configuration is lost (unless backed up). There is still an unavailability window where deployment updates couldn't be done in this condition.

What would make more sense is 2 or 3 nodes which replicate the /etc/kolla directory contents to a backend that was a multi-node data store. Since Ansible gets all state of the current system during the runtime, it doesn't need any more storage then a) whether a deployment operation is in progress and b) the configuration of the deployment.

I propose modifying the merge file script to read from configurable data stores. We would also add an Ansible script which read the contents of /etc/kolla and loaded it into a configurable data store. Finally there would be a "deployment_active" flag which would prevent new deployments unless the operator manually killed the flag (because they were aware of a lights out situation during a deploy which would result in the deployment_active flag not being removed from the data store.

I'd like the loading versioned, so for example there is a:
/0/etc/kolla representing the first load of the configuration
/1/etc/kolla representing the second load of the configuration
etc...

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Steven Dake
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Not started
Milestone target:
None
Completed by
Mark Goddard

Related branches

Sprints

Whiteboard

Agree on versioning /0/etc/kolla ... - vbel

To me, this is outside the scope of Kolla. A document explaining how some of this can be done is a great idea, but i'm not sure I agree with expanding Kolla like this. As discussed when you first purposed this sdake, it is not possible to do this the way you describe in your blueprint. Additionally, this does feel like the appropriate time to add a spec rather than a blueprint, though I know how much you dislike those. --SamYaple

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.