MicroStackで構築したOpenStack環境を外部クライアントからアクセスする場合、最近のバージョンのMicroStackはOpenStackのエンドポイントをHTTPSで張るため、次のようなSSLエラーが発生してしまいます。
% openstack image list Failed to discover available identity versions when contacting https://172.17.28.65: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を開いてページ情報を開き、「証明書を表示」ボタンをクリックします(Firefoxの場合)。
後はその画面からダウンロードした証明書をadmin-openrc.sh
の末尾に追加するだけで対応可能です。
(例)
% vi admin-openrc.sh ... export OS_CACERT=./ml110gen9-chain.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でもそんな対応をしたことがありましたね。