Posted at

OpenStack Keystoneのendpoint URLの更新方法

More than 3 years have passed since last update.

OpenStack Keystoneでサービスのendpoint URLを設定したあと、そのURLを更新する必要に迫られました。きっとkeystone endpoint-updateとかいうコマンドがあるのだろう。。。と思ったのですが、サポートされているのはendpoint-createendpoint-deleteのみ。設定を更新する、というコマンドはありませんでした(OpenStack Junoで検証)。Googleで調べてみると、どうやら同じ問題で悩んでいる人は他にもいるようなのですが、DBを直接いじって解決しているようでした。この記事ではDBの更新によるendpoint URLの変更方法についてお伝えします。

1. Databaseサーバーに接続する。

mysql -u root -p

2. keystone DBに接続する。

MariaDB [(none)]> connect keystone;

3. endpointテーブルを表示する。

MariaDB [keystone]> select * from endpoint;

+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| id | legacy_endpoint_id | interface | service_id | url | extra | enabled | region_id |
+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| 024c7a0d2734456cbcbec529b8dec3f8 | ef81cd642ef94ada960c08c79388b3b6 | internal | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:5000/v2.0 | {} | 1 | regionOne |
| 832f7fcac1234879aa6b1e688d39c22d | ef81cd642ef94ada960c08c79388b3b6 | admin | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:35357/v2.0 | {} | 1 | regionOne |
| 84ee7820fadc4d3ab7b4758762b9a4ec | f7a0da4c046f4d3890294a20fb048666 | internal | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://xxxxxx:8080/v1/AUTH_%(tenant_id)s | {} | 1 | regionOne |
| b789b9d3af774ea298b917607baa3a0a | f7a0da4c046f4d3890294a20fb048666 | public | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://xxxxxx:8080/v1/AUTH_%(tenant_id)s | {} | 1 | regionOne |
| ca67c7cb5b0b4086914f1662a7d7ed97 | f7a0da4c046f4d3890294a20fb048666 | admin | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://xxxxxx:8080 | {} | 1 | regionOne |
| df76cb0e66e4468cb1db4381fba3a07b | ef81cd642ef94ada960c08c79388b3b6 | public | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:5000/v2.0 | {} | 1 | regionOne |
+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+

4. 変更したいURLの行を選び、新しいURLを設定する。

MariaDB [keystone]> update endpoint set url='http://yyyyyy:8080/v1/AUTH_%(tenant_id)s' where id='b789b9d3af774ea298b917607baa3a0a';

Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

5. 新しいURLが設定されたことを確認する。

MariaDB [keystone]> select * from endpoint;

+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| id | legacy_endpoint_id | interface | service_id | url | extra | enabled | region_id |
+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| 024c7a0d2734456cbcbec529b8dec3f8 | ef81cd642ef94ada960c08c79388b3b6 | internal | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:5000/v2.0 | {} | 1 | regionOne |
| 832f7fcac1234879aa6b1e688d39c22d | ef81cd642ef94ada960c08c79388b3b6 | admin | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:35357/v2.0 | {} | 1 | regionOne |
| 84ee7820fadc4d3ab7b4758762b9a4ec | f7a0da4c046f4d3890294a20fb048666 | internal | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://xxxxxx:8080/v1/AUTH_%(tenant_id)s | {} | 1 | regionOne |
| b789b9d3af774ea298b917607baa3a0a | f7a0da4c046f4d3890294a20fb048666 | public | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://yyyyyy:8080/v1/AUTH_%(tenant_id)s | {} | 1 | regionOne |
| ca67c7cb5b0b4086914f1662a7d7ed97 | f7a0da4c046f4d3890294a20fb048666 | admin | 72f3a3d6717d4371a1eedfb82a1b5fbd | http://xxxxxx:8080 | {} | 1 | regionOne |
| df76cb0e66e4468cb1db4381fba3a07b | ef81cd642ef94ada960c08c79388b3b6 | public | 7eb8c12a399c42f9bf8af02b8f949ad5 | http://xxxxxx:5000/v2.0 | {} | 1 | regionOne |
+----------------------------------+----------------------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+

6. DBの接続を切る

MariaDB [keystone]> quit

Bye

7. keystone endpoint-listコマンドで新しいURLが設定されたことを確認する。

keystone endpoint-list

+----------------------------------+-----------+------------------------------------------------------------+-----------------------------------------+-------------------------+----------------------------------+
| id | region | publicurl | internalurl | adminurl | service_id |
+----------------------------------+-----------+------------------------------------------------------------+-----------------------------------------+-------------------------+----------------------------------+
| ef81cd642ef94ada960c08c79388b3b6 | regionOne | http://xxxxxx:5000/v2.0 | http://xxxxxx:5000/v2.0 | http://xxxxxx:35357/v2.0 | 7eb8c12a399c42f9bf8af02b8f949ad5 |
| f7a0da4c046f4d3890294a20fb048666 | regionOne | http://yyyyyy:8080/v1/AUTH_%(tenant_id)s | http://xxxxxx:8080/v1/AUTH_%(tenant_id)s | http://xxxxxx:8080 | 72f3a3d6717d4371a1eedfb82a1b5fbd |
+----------------------------------+-----------+------------------------------------------------------------+-----------------------------------------+-------------------------+----------------------------------+

以上で、endpointのURLを更新することができました。