[openstack-dev] [fuel] Ability to colocate roles

Bogdan Dobrelya bdobrelia at mirantis.com
Thu Jun 30 09:47:28 UTC 2016


On 06/30/2016 10:21 AM, Vladimir Kuklin wrote:
> Folks
> 
> This is a good idea actually. I think we could implement it by extending
> our node metadata model to support hierarchical tags such as
> "provides::database" or "service::messaging::rabbitmq" which would then
> actually map onto a set of tasks. In this case 'roles' would be simply
> collections of tags. When a user wants to change things, he just can
> reassign specific tags from the controller, e.g. database or messaging,
> to another node. Then we would show something like 'node-1: controller
> MINUS database and messaging, node-2: database and messaging'.  This
> would mean the following changes:
> 
> 1. Extend Nailgun roleresolver (module that actually maps tasks to
> nodes) to support tags (and, possibly, dynamic calculation of allocation
> with limited context)
> 2. Provide mapping of tags to particular tasks
> 3. Remove roles from tasks completely.
> 
> We could then also improve our dynamic calculation of things that
> changed with YAQL expressions to actually look into nodes tags instead
> of writing hacky 4-liners parsing metadata, e.g. run 'rabbitmq' task
> when "changed($.nodes.where(tag.matches('service::messaging::rabbitmq')))".
> 
> From what I know from Nailgun standpoint, this should be easy to
> implement, I think something like 2 weeks. Obviously, it requires some
> time to design and get consensus within core reviewers.

A brilliant idea, Vladimir! I fully support that. Would you create a spec?
And fancy "Tags" are much better then boring "Roles" :-)

> 
> On Wed, Jun 29, 2016 at 11:39 AM, Bogdan Dobrelya
> <bdobrelia at mirantis.com <mailto:bdobrelia at mirantis.com>> wrote:
> 
>     On 06/28/2016 06:15 PM, Alex Schultz wrote:
>     > Hey fuel folks,
>     >
>     > So I know we have designation of conflicts[0] on roles to prevent two
>     > roles from being on the same node. Should we also support a colocation
>     > option?  My thought behind this is that if we were to expose more of the
>     > underlying functionality (such as a corosync role), we could then
>     > require that roles like database[1] or rabbitmq[2] be combined with the
>     > corosync role rather than relying on dirty hiera overrides.  In the
> 
>     Good point. A role definition looking like this:
>     roles_metadata:
>       controller:
>         name: "Controller"
>         description: "..."
>         conflicts:
>           - compute
>           - ceph_osd
>         colocates(/contains/requires?):
>           - corosync
>           - haproxy
>           - database
>           - messaging
> 
>     Would look a way better than hacky code examples you provided.
> 
>     > longer term this could be useful for splitting apart some of the
>     > controller functionality into smaller roles but still requiring that
>     > they be next to each other on nodes.
>     >
>     > Thoughts?
>     >
>     > Thanks,
>     > -Alex
>     >
>     >
>     > [0] https://docs.fuel-infra.org/fuel-dev/develop/nailgun/customization/roles.html
>     > [1] https://github.com/openstack/fuel-plugin-detach-database/blob/master/deployment_scripts/database_hiera_override.pp#L83-L92
>     > [2] https://github.com/openstack/fuel-plugin-detach-rabbitmq/blob/master/deployment_scripts/rabbitmq_hiera_override.pp#L47-L48
>     >
>     >
>     >
>     __________________________________________________________________________
>     > OpenStack Development Mailing List (not for usage questions)
>     > Unsubscribe:
>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>     > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>     >
> 
> 
>     --
>     Best regards,
>     Bogdan Dobrelya,
>     Irc #bogdando
> 
>     __________________________________________________________________________
>     OpenStack Development Mailing List (not for usage questions)
>     Unsubscribe:
>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 
> 
> 
> 
> -- 
> Yours Faithfully,
> Vladimir Kuklin,
> Fuel Library Tech Lead,
> Mirantis, Inc.
> +7 (495) 640-49-04
> +7 (926) 702-39-68
> Skype kuklinvv
> 35bk3, Vorontsovskaya Str.
> Moscow, Russia,
> www.mirantis.com <http://www.mirantis.ru/>
> www.mirantis.ru <http://www.mirantis.ru/>
> vkuklin at mirantis.com <mailto:vkuklin at mirantis.com>
> 
> 
> __________________________________________________________________________
> 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
> 


-- 
Best regards,
Bogdan Dobrelya,
Irc #bogdando



More information about the OpenStack-dev mailing list