TL;DR keep globals.yml to a minimum, customise configs via host_vars/group_vars

It seems right now the "best" approach may be to tokenise variables as required. This is the approach we currently use in Oracle. There are two other approaches I can think of available to us:

1) The overwrite mechanism as Jeffrey mentioned
2) Make the merge_configs script modular so it can handle more formats than just ini

The problem with 1) is that it is heavy weight for the Operator who wants to just customise one or two variables such as WEBROOT. Now they have to copy and maintain the entire config file.

The problem with 2) is that I feel it's a burden on us to write and maintain code that can merge many different file formats. It could be done, though may potentially be outside the scope of the project.

The tokenisation approach is unfortunately against what is described in "Kolla’s Deployment Philosophy"[0] though the reality may be that this approach is the most Operator friendly. In regards to concern of globals.yml growing unmanageable, I feel globals.yml is overused and should only store the bare minimum. Service specific variables should be kept within their own role files (e.g. ansible/roles/horizon/defaults), and then documented which are available for tweaking via top level host_vars/group_vars. This is standard practice in other Ansible roles I've come across.

-Paul

[0] http://docs.openstack.org/developer/kolla/deployment-philosophy.html

On 04/05/16 16:28, Mauricio Lima wrote:
I agree with your approach Jeffrey, although this is not ideal, this is
an approach already used in kolla.

2016-05-04 12:01 GMT-03:00 Jeffrey Zhang <zhang.lei....@gmail.com
<mailto:zhang.lei....@gmail.com>>:

    Recently, Jack Ning pushed a PS[0], which export the `WEBROOT` to
    the globals.yml file.
    Because there is no chance to change the horizon/apache configure
    file now.

    The root cause is that: Kolla do not support non-ini format
    configure file. for the
    ini-format file, we use a merge_config module[1] to merge all the
    found file. But it
    will be not work for configure file for apache, rabbitmq and so on.

    I would like to the current merge_config implementation. It is
    directly and easy to use.
    Not like the puppet, we have to remember the variable name defined
    in the module. we have
    no chance to add some user-defined variable.

    Export the variable to global is very bad and ugly. It will became a
    disaster when more
    and more variables is exported.

    So we should catch up a better solution to handle the configure file.

    One solution I have is use overwrite mechanism. for example when
    there is a file in
    /etc/kolla/config/apache.conf, it will overwrite the templates in
    the roles. But this
    is still not ideal.

    Any body has better solution?

    [0] https://review.openstack.org/306928
    [1]
    
http://git.openstack.org/cgit/openstack/kolla/tree/ansible/action_plugins/merge_configs.py

    --
    Regards,
    Jeffrey Zhang
    Blog: http://xcodest.me <http://xcodest.me/>

    __________________________________________________________________________
    OpenStack Development Mailing List (not for usage questions)
    Unsubscribe:
    openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
    <http://openstack-dev-requ...@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-requ...@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-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to