[openstack-dev] [Fuel] Separate master node provisioning and deployment

Igor Kalnitsky ikalnitsky at mirantis.com
Mon Dec 14 09:53:31 UTC 2015


Vladimir,

Thanks for raising this question. I totally support idea of separating
provisioning and deployment steps. I believe it'll simplify a lot of
things.

However I have some comments regarding this topic, see them inline. :)

> For a package it is absolutely normal to throw a user dialog.

It kills idea of fuel-menu, since each package will need to implement
configuration menu of its own. Moreover, having such configuration
menu in fuel-menu and in each package is too expensive, it will
require more effort that I'd like to have.

> Fuel package could install default astute.yaml (I'd like to rename it
> into /etc/fuel.yaml or /etc/fuel/config.yaml) and use values from the
> file by default not running fuelmenu

I don't like idea of having one common configuration file for Fuel
components. I think it'd be better when each component (subproject)
has its own configuration file, and knows nothing about external ones.

Meantime we can provide fuel-menu which will become a configuration
gate for different subprojects. Perhaps we could consider to use
pluggable approach, so each component will export plugin for fuel-menu
with own settings.

> What is wrong with 'deployment script' approach?

The wrong thing is that with such approach it would be impossible to
setup Fuel with just something like

    $ yum install fuel

In my opinion we should go into the following approach:

* yum install fuel
* fuel-menu

The first command should install a basic Fuel setup, and everything
should work when it's done.

While the second one prompts a configuration menu where one might
change default settings (reconfigure default installation).

Thanks,
Igor

On Mon, Dec 14, 2015 at 9:30 AM, Vladimir Kozhukalov
<vkozhukalov at mirantis.com> wrote:
> Oleg,
>
> Thanks a lot for your opinion. Here are some more thoughts on this topic.
>
> 1) For a package it is absolutely normal to throw a user dialog. But
> probably there is kind of standard for the dialog that does not allow to use
> fuelmenu. AFAIK, for DEB packages it is debconf and there is a tutorial [0]
> how to get user input during post install. I don't know if there is such a
> standard for RPM packages. In some MLs it is written that any command line
> program could be run in %post section including those like fuel-menu.
>
> 2) Fuel package could install default astute.yaml (I'd like to rename it
> into /etc/fuel.yaml or /etc/fuel/config.yaml) and use values from the file
> by default not running fuelmenu. A user then is supposed to run fuelmenu if
> he/she needs to re-configure fuel installation. However, it is gonna be
> quite intrusive. What if a user installs fuel and uses it for a while with
> default configuration. What if some clusters are already in use and then the
> user decides to re-configure the master node. Will it be ok?
>
> 3) What is wrong with 'deployment script' approach? Why can not fuel just
> install kind of deployment script? Fuel is not a service, it consists of
> many components. Moreover some of these components could be optional (not
> currently but who knows?), some of this components could be run on an
> external node (after all Fuel components use REST, AMQP, XMLRPC to interact
> with each other).
> Imagine you want to install OpenStack. It also consists of many components.
> Some components like database or AMQP service could be deployed using HA
> architecture. What if one needs Fuel to be run with external HA database,
> amqp? From this perspective I'd say Fuel package should not exist at all.
> Let's maybe think of Fuel package as a convenient way to deploy Fuel on a
> single node, i.e single node deployment script.
>
> 4) If Fuel is just a deployment script, then I'd say we should not run any
> post install dialog. Deployment script is to run this dialog (fuelmenu) and
> then run puppet. IMO it sounds reasonable.
>
>
> [0] http://www.fifi.org/doc/debconf-doc/tutorial.html
>
> Vladimir Kozhukalov
>
> On Fri, Dec 11, 2015 at 11:14 PM, Oleg Gelbukh <ogelbukh at mirantis.com>
> wrote:
>>
>> For the package-based deployment, we need to get rid of 'deployment
>> script' whatsoever. All configuration stuff should be done in package specs,
>> or by the user later on (maybe via some fuelmenu-like lightweight UI, or via
>> WebUI).
>>
>> Thus, fuel package must install everything that is required for running
>> base Fuel as it's dependencies (or dependencies of it's dependencies, as it
>> could be more complicated with cross-deps between our components).
>>
>> --
>> Best regards,
>> Oleg Gelbukh
>>
>> On Fri, Dec 11, 2015 at 10:45 PM, Vladimir Kozhukalov
>> <vkozhukalov at mirantis.com> wrote:
>>>
>>> Dear colleagues,
>>>
>>> At the moment part of the Fuel master deployment logic is located in ISO
>>> kickstart file, which is bad. We'd better carefully split provisioning and
>>> deployment stages so as to install base operating system during provisioning
>>> stage and then everything else on the deployment stage. That would make it
>>> possible to deploy Fuel on pre-installed vanilla Centos 7. Besides, if we
>>> have deb packages for all Fuel components it will be easy to support Fuel
>>> deployment on pre-installed Ubuntu and Debian.
>>>
>>> We (Fuel build team) are going to do this ASAP [0]. Right now we are on
>>> the stage of writing design spec for the change [1].
>>>
>>> Open questions are:
>>> 1) Should fuel package have all other fuel packages like nailgun, astute,
>>> etc. as its dependencies? Or maybe it should install only puppet modules and
>>> deployment script that then could be used to deploy everything else?
>>>
>>> 2) bootstrap_admin_node.sh runs fuelmenu and then puppet to deploy Fuel
>>> components. Should we run this script as post-install script or maybe we
>>> should leave this up to a user to run this script later when fuel package is
>>> already installed?
>>>
>>> Anyway, the final goal is to make ISO just one of possible delivery
>>> schemes. Primary delivery approach should be rpm/deb repo, not ISO.
>>>
>>> [0]
>>> https://blueprints.launchpad.net/fuel/+spec/separate-fuel-node-provisioning
>>> [1] https://review.openstack.org/#/c/254270/
>>>
>>> Vladimir Kozhukalov
>>>
>>>
>>> __________________________________________________________________________
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe:
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



More information about the OpenStack-dev mailing list