[openstack-dev] [tripleo] Modifying just a few values on overcloud redeploy

Steven Hardy shardy at redhat.com
Wed Jul 27 10:04:44 UTC 2016


On Tue, Jul 26, 2016 at 05:23:21PM -0400, Adam Young wrote:
>    I worked through how to do a complete clone of the templates to do a
>    deploy and change a couple values here:
> 
>    http://adam.younglogic.com/2016/06/custom-overcloud-deploys/
> 
>    However, all I want to do is to set two config options in Keystone.  Is
>    there a simple way to just modify the two values below?  Ideally, just
>    making a single env file and passing it via openstack overcloud deploy -e
>    somehow.
> 
>    'identity/domain_specific_drivers_enabled': value => 'True';
> 
>    'identity/domain_configurations_from_database': value => 'True';

Yes, the best way to do this is to pass a hieradata override, as documented
here:

http://docs.openstack.org/developer/tripleo-docs/advanced_deployment/node_config.html

First step is to look at the puppet module that manages that configuration,
in this case I assume it's puppet-keystone:

https://github.com/openstack/puppet-keystone/tree/master/manifests

Some grepping shows that domain_specific_drivers_enabled is configured
here:

https://github.com/openstack/puppet-keystone/blob/master/manifests/init.pp#L1124..L1155

So working back from those variables, "using_domain_config" and
"domain_config_directory", you'd create a yaml file that looks like:

parameter_defaults:
  ControllerExtraConfig:
    keystone::using_domain_config: true
    keystone::domain_config_directory: /path/to/config

However, it seems that you want to configure domain_specific_drivers_enabled
*without* configuring domain_config_directory, so that it comes from the
database?

In that case, puppet has a "passthrough" interface you can use (this is the
same for all openstack puppet modules AFAIK):

https://github.com/openstack/puppet-keystone/blob/master/manifests/config.pp

Environment (referred to as controller_extra.yaml below) file looks like:

parameter_defaults:
  ControllerExtraConfig:
    keystone::config::keystone_config:
      identity/domain_specific_drivers_enabled:
        value: true
      identity/domain_configurations_from_database:
        value: true

Note the somewhat idiosyncratic syntax, you pass the value via a
"value: foo" map, not directly to the configuration key (don't ask me why!)

Then do openstack overcloud deploy --templates /path/to/templates -e controller_extra.yaml

The one gotcha here is if puppet keystone later adds an explicit interface
which conflicts with this, e.g a domain_specific_drivers_enabled variable
in the above referenced init.pp, you will get a duplicate definition error
(because you can't define the same thing twice in the puppet catalog).

This means that long-term use of the generic keystone::config::keystone_config
interface can be fragile, so it's best to add an explicit e.g
keystone::domain_specific_drivers_enabled interface if this is a long-term
requirement.

This is probably something we should add to our docs, I'll look at doing
that.

Hope that helps,

Steve



More information about the OpenStack-dev mailing list