← Back to team overview

fuel-dev team mailing list archive

Re: Fuel plugin ideas

 

Unless we move away from package based deployment altogether (which
btw I think would be a bad idea: I agree with Aleksandr and Ivan that
packages are more suitable for production), we have to make generation
of rpm and deb packages a part of our development process. I think the
best way to achieve that is have a public git-buildpackage repository
for each package we build, and use mr/myrepos to make rebuilding all
these packages a part of make iso, as an alternative to "make
deep_clean".

Having one deployment process for development and another process for
production is even worse than picking the wrong process. It would push
discovery of packaging-related bugs from the very beginning of the
development cycle (before the change is even pushed to gerrit) towards
the very end of the cycle (after a release candidate build was passed
to QA). It is widely accepted that the cost of fixing a bug grows
exponentially related to the time elapsed since the bug was
introduced.

My 2c,
-DmitryB


On Tue, Jan 14, 2014 at 1:13 PM, Ivan Kolodyazhny <e0ne@xxxxxxxxx> wrote:
> RPMs is good for production use. For development process we need to specify
> some workflow and create guidelines like a Nailgun docs to easy get
> development environment.
>
>
> --
> Regards,
> Ivan "e0ne" Kolodyazhny
>
> On Tue, Jan 14, 2014 at 7:35 PM, Andrey Korolyov <akorolev@xxxxxxxxxxxx>
> wrote:
>>
>> On 01/14/2014 01:59 PM, Aleksandr Didenko wrote:
>> > One more thing to consider: plugins packaging into RPMs. This will
>> > provide a set of benefits "for free", for example:
>> >
>> > - versioning
>> > - easy installation/removal/upgrades/downgrades/distribution
>> > - dependencies (including cross plugin dependencies)
>> > - conflicts (including cross plugin conflicts)
>> > - plugin consistency check (rpm -qV)
>> >
>> > Thanks
>> > --
>> > Aleksandr
>> >
>> >
>>
>> Sounds great but will be complete mess during development stage. Can be
>> fixed via tgz archives during development window and 'equal' packages
>> during code freeze testing.
>>
>> >
>> > On Sat, Jan 4, 2014 at 8:38 PM, Sergey Vasilenko
>> > <svasilenko@xxxxxxxxxxxx <mailto:svasilenko@xxxxxxxxxxxx>> wrote:
>> >
>> >     I think we shouldn't tell about plugable architecture for fuel,
>> >     before divide one global manifest to set of small. First step
>> >     (master-less) already done.
>> >
>> >
>> >     On Fri, Jan 3, 2014 at 12:00 AM, Andrew Woodward <xarses@xxxxxxxxx
>> >     <mailto:xarses@xxxxxxxxx>> wrote:
>> >
>> >         We need to address that a lot (if not all) of puppet "plugins"
>> >         will be pre-baked from upstream sources. For example nagios. A
>> >         user will want to be able to use that module, and even keep it
>> >         up to date with the upstream, we should never modify the module
>> >         existing files.
>> >
>> >             Each plugin has to be implemented as a separate module. Init
>> >             manifest withouta input parameters (init.pp) should be used
>> >             as an entry point to each plugin.
>> >
>> >         No, a separate bridging file plugin_fuel_<module>.pp should be
>> >         created.
>> >
>> >
>> >             All parameters for plugin should be kept in astute.yaml
>> >
>> >         We need to fail if a required parameter is not provided.
>> >
>> >             Function which automatically loads each plugin (e.g. it
>> >             should execute init manifest of each class with name mask
>> >             "plugin_.*") is required.
>> >
>> >         This likely need to be a function of astute and even our core
>> >         modules should be loaded this way. modules included should be
>> >         based from data in astute.yaml.
>> >
>> >
>> >             Staging system should be implemented. All plugins have to be
>> >             executed in a separate stage (e.g. Stage['main'] -> stage
>> >             {'plugins':} )
>> >
>> >         We can't assume that this is OK. we can encourage plugins to use
>> >         a separate phase, however this is not enforceable in all cases
>> >         (everything must be loaded this way). We should create a set of
>> >         standard stages, and create pre and post stages as-well this way
>> >         a plugin can insert its self where necessary. A plugin without a
>> >         stage should run last. Which stage might be operated by
>> > astute.yaml
>> >
>> >         example stages might include: init, pre-networking, networking,
>> >         post-networking ...
>> >         (actual stages
>> >         are
>> > https://github.com/stackforge/fuel-library/blob/master/deployment/puppet/osnailyfacter/examples/site.pp#L14-21
>> > )
>> >
>> >
>> >             Each puppet class which is used with library has to have the
>> >             ability to be disabled from plugin
>> >             This is necessary because plugins may require to disable
>> >             some services. Alternatively this can be implemented by
>> >             using resource collections (e.g. Service <| title ==
>> >             l3-agent|> { noop => true }) but we can't execute plugin in
>> >             a separate stage in this case.
>> >
>> >         This is mostly addressed by loading all modules, including core
>> >         components the same way. If you dont wat a core module to run,
>> >         you simply get astute to not run it. Some modules might still
>> >         need further tweaking to allow more flexible overriding. If all
>> >         modules load the same way, we should be able to simply replace
>> >         the parameter into it's plugin_fuel_<module> class by calling it
>> >         instead of allowing it to be defined with the defaults.
>> >
>> >         Andrew Woodward
>> >         Mirantis
>> >
>> >         --
>> >         Mailing list: https://launchpad.net/~fuel-dev
>> >         Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>> >         <mailto:fuel-dev@xxxxxxxxxxxxxxxxxxx>
>> >         Unsubscribe : https://launchpad.net/~fuel-dev
>> >         More help   : https://help.launchpad.net/ListHelp
>> >
>> >
>> >
>> >     --
>> >     Mailing list: https://launchpad.net/~fuel-dev
>> >     Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>> >     <mailto:fuel-dev@xxxxxxxxxxxxxxxxxxx>
>> >     Unsubscribe : https://launchpad.net/~fuel-dev
>> >     More help   : https://help.launchpad.net/ListHelp
>> >
>> >
>> >
>> >
>>
>>
>> --
>> Mailing list: https://launchpad.net/~fuel-dev
>> Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~fuel-dev
>> More help   : https://help.launchpad.net/ListHelp
>
>
>
> --
> Mailing list: https://launchpad.net/~fuel-dev
> Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~fuel-dev
> More help   : https://help.launchpad.net/ListHelp
>



-- 
Dmitry Borodaenko


Follow ups

References