MicroStackで構築したOpenStack環境を外部クライアントからアクセスする場合、最近のバージョンのMicroStackはOpenStackのエンドポイントをHTTPSで張るため、次のようなSSLエラーが発生してしまいます。
% openstack image list Failed to discover available identity versions when contacting https://172.17.28.71:5000/v3/. Attempting to parse version from URL. SSL exception connecting to https://172.17.28.65:5000/v3/auth/tokens: HTTPSConnectionPool(host='172.17.28.65', port=5000): Max retries exceeded with url: /v3/auth/tokens (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1131)')))
MicroStackのノード上でコマンドを実行する場合は特にここは意識する必要はありません。あくまで、別のクライアントからCLIでアクセスする時などに問題になる件です。
回避方法は、admin-openrc.sh
の末尾などにexport OS_CACERT
行を追加して証明書を設定してしまう方法です。
ブラウザーでOpenStack Dashboardを開いてAPI Accessのページを開きます。
IdentityのService Endpoint URLを開きます。
オンプレの環境だとおそらく証明書エラーがブラウザーに表示されますが、画面の「証明書を確認」リンクをクリックすると証明書の詳細ページが表示されますので、中程のダウンロードから「PEM証明書」をダウンロードしてください。あとはこれを適切なパスに置いて、admin-openrc.sh
の末尾にexport OS_CACERT
行を追加して証明書を設定してしまえば終わりです。
後はその画面からダウンロードした証明書をadmin-openrc.sh
の末尾に追加するだけで対応可能です。
(例)
% vi admin-openrc.sh ... export OS_CACERT=./bay15-gen9-maas.pem
編集済みのopenrcを再読込した後は、SSLエラーが発生すること無くコマンドが実行できるようになります。
% source admin-openrc.sh % openstack image list +--------------------------------------+----------------------+--------+ | ID | Name | Status | +--------------------------------------+----------------------+--------+ | 36a43e92-ce59-449e-85b8-fd16aba36d6c | centos7.9-2003-qcow2 | active | | 66fbb4bb-af8b-44b3-8d87-daabdd47cd02 | cirros | active | | 9181d038-4ed2-45f3-86e4-af2d0dc6c655 | ubuntu-bionic | active | +--------------------------------------+----------------------+--------+
そういえばJujuで構築したOpenStackでもそんな対応をしたことがありましたね。