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

Igor Kalnitsky ikalnitsky at mirantis.com
Mon Dec 14 15:01:27 UTC 2015


> One of potential disadvantages is that it is harder to track package dependencies, but I think
> a deployment script should be a root of the package dependency tree.

That's something I'd try to avoid. Let's be close to distro upstream
practice. I never saw something like "fuel-deploy" that runs puppet
that runs package installation. You usually install packages you want
to use. If you want to use something beyond default distribution, you
install some additional optional packages and that's it.

On Mon, Dec 14, 2015 at 3:21 PM, Vladimir Kozhukalov
<vkozhukalov at mirantis.com> wrote:
>> 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.
>
> fuel-menu could be a configuration gate for fuel deployment script
>
>> The wrong thing is that with such approach it would be impossible to
>> setup Fuel with just something like
>
>>    $ yum install fuel
>
> I see nothing wrong here. 'yum install fuel' would be appropriate approach
> if fuel was a service,
> not a bunch of services some of which are not even limited to be installed
> on the master node.
>
> when you run
>
> # yum install fuel
> # fuel-menu
>
> it the same as you run
>
> # yum install fuel
> # fuel_deploy_script (which runs fuel-menu and then runs puppet which
> installs everything else)
>
> I like the idea when fuel (let's rename it into fuel-deploy) package
> provides just a deployment script.
> It does not require a lot of changes and it corresponds to what we really
> do. Besides, it is more flexible
> because deployment could be modular (several stages).
>
> One of potential disadvantages is that it is harder to track package
> dependencies, but I think
> a deployment script should be a root of the package dependency tree.
>
>
>
> Vladimir Kozhukalov
>
> On Mon, Dec 14, 2015 at 12:53 PM, Igor Kalnitsky <ikalnitsky at mirantis.com>
> wrote:
>>
>> 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
>> >
>>
>> __________________________________________________________________________
>> 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