Enable Fuel to deploy OpenStack without OS provisioning

Registered by Dmitriy Novakovskiy on 2014-01-12

User Story:
As a user, I want to deploy Mirantis OpenStack on my existing CentOS/Ubuntu hosts w/o reinstalling host OS

Motivation:
There's a certain type of customers who don't want/can't "afford" Mirantis OpenStack to be deployed with full PXE-boot and OS provisioning flow. They need to deploy on pre-installed OS. Examples:

- Large enterprises, where OpenStack deployment and server infrastructure provisioning and management have are decoupled; servers are pre-provisioned with specific security measures and software sets
- Appliance vendors, who want to partner with Mirantis and deliver OpenStack solution on top of their products, but don't want Fuel to change OS on a well-tested and functioning device
- Public hosting (like Softlayer), where PXE provisioning may be not available and/or substitution of host OS may be undesirable

Risks & limitations:
Obviously running Mirantis OpenStack on top of untested OS stack limits the "default" option of commercial support. For customers willing to get support we'll need to go through additional certification / custom support contract process, while also provide comprehensive messaging/disclaimers around limits of support on user interface and documentation.
But I believe this is out of scope for a technical discussion about feature :)

Implementation approach:

I believe that community will elaborate the most optimal solution for this requirement :), so here I'll just share a few ideas I've got from Fuel "practitioners" who already approached this problem at some point:

A1. Allow user to "pre-seed" existing CentOS/Ubuntu node with a set of packages required to make it "discoverable" by Fuel master node (puppet, mcollective, nailgun etc). This can be done in a number of ways:
A1.1. upload "pre-seed" package to hosts whose IP's user explicitly specifies
A1.2. enable the "pre-seed" package to be "generated" (by Fuel master node for a currently relevant fuel version/build) and then integrated into customer's CI/CD and/or infrastructure management system (so that all newly provisioned nodes of large enterprise will contain all that's required to get the node discovered in Fuel)

Blueprint information

Status:
Not started
Approver:
Mike Scherbakov
Priority:
Medium
Drafter:
Evgeniy L
Direction:
Approved
Assignee:
Fuel Python (Deprecated)
Definition:
New
Series goal:
Accepted for future
Implementation:
Not started
Milestone target:
milestone icon next

Related branches

Sprints

Whiteboard

DN, 12.01.2014: Implemented (Partially?) in "nailgun-separate-provisioning-and-deployment-handlers". Will follow up to this BP after PoC with customer (to see if any additional bits are needed)

AndreyDanin, Jan 24, 2014: To make foreign nodes be discoverable you need at least these packages (see http://ss0078.svwh.net/fwm/4.0/ubuntu/pool/main/ for example):
nailgun-agent, nailgun-mcagents and all their deps (ohai, mcollective etc.).
Also you may need nailgun-net-check and dhcp-checker packages.

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.