Switch undercloud and overcloud credential files to using os-client-config clouds.yaml

Registered by Graeme Gillies

Hi,

Currently both the undercloud (stackrc) and overcloud (overcloudrc) credential files make the user use environment variables for all the appropriate options. The limitations of environment variables is well understood, and when switching between the two can sometimes not be 100% clean (if you have options in 1 file but not the other, as environment variables aren't "unset").

The correct and future proof way of doing this is to use os-client-config and have TripleO correctly populate /home/stack/.config/openstack/clouds.yaml with the details of the two clouds (as they are created). An example copy of this file might look like

clouds:
  undercloud:
    auth:
      auth_url: http://192.0.2.1:35357/
      username: admin
      password: somepassword
      project_name: admin

  overcloud:
    auth:
      auth_url: https://cloud.example.com:13357/
      username: admin
      password: anotherpassword
      project_name: admin

Then a user has the option of using the command line tools against either cloud easily with

openstack --os-cloud undercloud server list

openstack --os-cloud overcloud server list

or

export OS_CLOUD=undercloud
openstack server list

export OS_CLOUD=overcloud
openstack server list

For backwards compatibility stackrc and overcloudrc files will remain but only export OS_CLOUD to the appropriate value.

This better aligns with the direction python-openstackclient wishes us to go, is more robust than environment variables and allows the operator greater customisation, as the operator can add extra options (like forcing api versions etc) in clouds.yaml themselves (which we will not overwrite).

On top of this, for users of tools such as python-shade and ansible (and other tools leveraging python-openstackclient programatically), this integration is a lot cleaner.

Blueprint information

Status:
Complete
Approver:
Alex Schultz
Priority:
Medium
Drafter:
Graeme Gillies
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for train
Implementation:
Implemented
Milestone target:
milestone icon train-2
Started by
Alex Schultz
Completed by
Alex Schultz

Related branches

Sprints

Whiteboard

[2019-07-30] (aschultz) Was implemented in the Train cycle, https://review.opendev.org/#/q/topic:overcloud_cloudyaml+(status:open+OR+status:merged)
[2019-05-21] revisiting this for the overcloud, standalone has this already.

[jpichon 2017.12.06] Switching to rocky-1.

[jpichon 2017.10.02] Tentatively targeting Queens-2 after discussing with PTL; will be deferred to Rocky if cannot merge by then.

[jpichon 2017.09.27] I think we could look at implementing this into Queens, though rather than "switch" it would probably be easier to have both ways in parallel for a bit, updating the docs to use the new system.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.