OpenStack Keystoneでサービスのendpoint URLを設定したあと、そのURLを更新する必要に迫られました。きっとkeystone endpoint-update
とかいうコマンドがあるのだろう。。。と思ったのですが、サポートされているのはendpoint-create
とendpoint-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を更新することができました。