Following the information at http://tripleo.org/installation/installation.html#updating-undercloud-components, I updated my Newton undercloud with "openstack undercloud upgrade". It worked well, except the settings I had set manually at /var/www/openstack-tripleo-ui/dist/tripleo_ui_config.js were overwritten, leading to the UI becoming unusable (can't log in or access services).
This is happening because we are creating the file with Puppet at https://github.com/openstack/puppet-tripleo/blob/15c7d4/manifests/ui.pp#L109. This is probably the correct behaviour when configuration is managed by puppet like this, and that way when new settings etc are required with new versions they will be set up correctly when upgrading.
It is however causing issues when URLs need to be overridden, which is currently the case when e.g. using the UI in a virtualised environment (until https://blueprints.launchpad.net/tripleo/+spec/enable-communication-ui-undercloud is implemented, tunnelling is required and the URLs in that file need to be adjusted.)
It's not entirely clear to me if this requires only a new setting in the puppet configuration, or if we also need a new setting in undercloud.conf as well. I think perhaps it makes sense that if the existing "undercloud_hostname" parameter in undercloud.conf is set, then we use it to create the service URLs with that hostname in tripleo_ui_config.js rather than take them from the catalogue.
So I think puppet overwriting the config file is expected, any file managed by puppet should not be manually modified.
I think you'll need to modify the puppet manifest which manages the UI config to do what you need:
https:/ /github. com/openstack/ puppet- tripleo/ blob/master/ manifests/ ui.pp
Then you can pass data to influence the configuration via a hieradata overrides file:
https:/ /github. com/openstack/ instack- undercloud/ blob/master/ instack_ undercloud/ undercloud. py#L231
then you can have a file e.g my_overrides.yaml specified in your undercloud.conf which contains hiera key/value pairs, e.g
tripleo: :ui::someconfig : foo
You might also be able to modify the manifest to do what you need (e.g I assume the reason you're configuring that manually is puppet doesn't configure the file to point at keystone correctly?)