clouds.yaml - how to generate and use it

How to generate and use clouds.yaml

Downloading from horizon

The easiest way to get the file is opening horizon and going to Project -> Project -> API Access. Then, click on "Download OpenStack RC File" and select to download the "clouds.yaml" file.

Download clouds.yaml file

Then, copy this file into the current Director as clouds.yaml.

This file will need one minor modification, as the password needs to be added to:

1
2
3
4
5
clouds:
  <cloud identifier>:
    auth:
(...)
      password: VrcxVu7RmZAzpzKUaHmcMv22q

Test it with:

1
openstack --os-cloud <cloud identifier> token issue

Manually creating the file

Use the following script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

source /home/stack/overcloudrc

PROJECT_ID=$(openstack project list | grep $OS_PROJECT_NAME | awk '{print $2}')

cat << EOF > clouds.yaml
clouds:
  openstack:
    auth:
      auth_url: $OS_AUTH_URL
      username: "$OS_USERNAME"
      password: "$OS_PASSWORD"
      project_name: "$OS_PROJECT_NAME"
      project_id: "$PROJECT_ID"
      user_domain_name: "$OS_USER_DOMAIN_NAME"
    region_name: "$OS_REGION_NAME"
    interface: "public"
    identity_api_version: $OS_IDENTITY_API_VERSION
EOF

Further details

Look at overcloudrc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[stack@undercloud-0 ~]$ cat overcloudrc 
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="}  /^OS_/ {print $1}' ); do unset $key ; done
export OS_NO_CACHE=True
export COMPUTE_API_VERSION=1.1
export OS_USERNAME=admin
export no_proxy=,172.16.0.199,192.168.24.12
export OS_USER_DOMAIN_NAME=Default
export OS_VOLUME_API_VERSION=3
export OS_CLOUDNAME=overcloud
export OS_AUTH_URL=http://172.16.0.199:5000//v3
export NOVA_VERSION=1.1
export OS_IMAGE_API_VERSION=2
export OS_PASSWORD=VrcxVu7RmZAzpzKUaHmcMv22q
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_NAME=admin
export OS_AUTH_TYPE=password
export PYTHONWARNINGS="ignore:Certificate has no, ignore:A true SSLContext object is not available"

# Add OS_CLOUDNAME to PS1
if [ -z "${CLOUDPROMPT_ENABLED:-}" ]; then
    export PS1=${PS1:-""}
    export PS1=\${OS_CLOUDNAME:+"(\$OS_CLOUDNAME)"}\ $PS1
    export CLOUDPROMPT_ENABLED=1
fi

Get the project id with:

1
openstack project list | grep $OS_PROJECT_NAME | awk '{print $2}'

Generate clouds.yaml with the above credentials. Adjust this to use the actual configuration and credentials as obtained from overcloudrc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
cat <<'EOF' > clouds.yaml
clouds:
  openstack:
    auth:
      auth_url: http://172.16.0.199:5000//v3
      username: "admin"
      password: VrcxVu7RmZAzpzKUaHmcMv22q
      project_name: "admin"
      project_id: "a416f556938f454f849da42faa317cd3"
      user_domain_name: "Default"
    region_name: "regionOne"
    interface: "public"
    identity_api_version: 3
EOF

Using clouds.yaml

With the openstack CLI, use clouds.yaml by providing --os-cloud <cloud identifier from YAML file>:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[stack@undercloud-0 ~]$ openstack --os-cloud openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2019-10-26T11:18:10+0000                                                                                                                                                                |
| id         | gAAAAABdtB1i8wnsh-pkN6fGMFD5vX7bcvxWms__01c9FFeDp3U-iG6NB31NJc9QhVxVB7WB9_D5J9gwGX91TIdMEiqmhTuI66Wz8eGkw-jxoiAR81y1UYskPrORlAj4Vl0u2L7bifalN7VnPoWu6ISgDCIhd1vF6BZwtU1NrLpfT0KBqMX83_Q |
| project_id | a40944973ca8466cb30faeb669646359                                                                                                                                                        |
| user_id    | f41f1e1433744957985eef31d5d64309                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[stack@undercloud-0 ~]$ openstack --os-cloud openstack network list
+--------------------------------------+----------+---------+
| ID                                   | Name     | Subnets |
+--------------------------------------+----------+---------+
| a01c429e-9095-4838-8ff9-c14ed0683025 | private1 |         |
+--------------------------------------+----------+---------+