SVX日記
2015-12-08(Tue) SwiftにGlanceしてみたい
どうも本格的に使う前に、味見するだけで相当かかりそうなopenstackであるが、イメージサービス「Glance」が、オブジェクトストレージ「Swift」を利用していないことに気づいてしまった。せっかくなので上に載せてみたい。
んが、どうもpackstackによりインストール時からその状態にすることはできないようで、インストール完了後に設定を行う必要がありそうな感じ。openstackについては、まだ右も左もわからない状態なので、そのまんま「glance swift」としてググってみる。すると、容易に「ObjectStorage Service をイメージの保管に使用する方法」などという、ほぼそのまんまっぽい情報が見つかった。
そもそも認証とかエンドポイントの概念について、ほとんどわかってないんだよな。コマンドラインからkeystoneでトークンをもらってみたり、telnetでhttp://xx.xx.xx.xx:5000/v2.0/につないでみたりしてみる。なるほど。エンドポイントとはURIであり、httpのPOSTで認証情報と命令を送り、結果を受取るわけか。
と、極めて初歩的な気付きが得られたものの、Glanceのエラーについてはサッパリわからず。manページを眺めたり、confをgrepしたり……って、ん? schemeって、storeのタイプってこと? もしかして、こうか?
# vi /etc/glance/glance-api.conf
:
# List of stores enabled (list value)
stores=swift,file,http
:
おぉ、glance-apiが上がるようになった。なんだよ、一番大事な設定が抜けてたんじゃねぇか。ちゃんと書いておけよな。ブツブツいいながら、Horizonのadmin権限で、Fedora23のイメージをGlanceに登録してみた。成功。これで、オブジェクトストレージを見に行けば、イメージがオブジェクトとして登録されているはず……と思ったら、登録されてない。なんで?
fileとして登録されているFedora23のイメージが/var/lib/glance/imagesの下に存在していることはわかっている。加えて、swiftとして登録されているであろう同程度のサイズのファイルが、/srv/node/device1/objectsの下にも存在していることもわかっている。
もしかして、Glanceユーザのテナントに配置されている? Glanceユーザでなんて、ログインできるのかしらん。Horizonにログインするにはパスワードいるよな。設定した覚えはないが……って、もしかしてアレか。/etc/glance/glance.conf的な設定ファイルの中に自動設定されているとか? ビンゴ!
# cat /etc/glance/glance-api.conf | grep -i password
admin_password=****************
#===========================================================================
#
# glance のバックエンドを swift に変更
#
kgt.execs([
kgt.systemctl(%w!status openstack-glance-registry!),
kgt.systemctl(%w!status openstack-glance-api!),
])
swift_store_auth_address, swift_store_key =
kgt.get_params('/etc/swift/proxy-server.conf', ['auth_uri', 'admin_password'])
kgt.modify(
'/etc/glance/glance-api.conf', [
kgt.ss_set_param('stores=', 'swift,file,http'),
kgt.ss_set_param('default_store=', 'swift'),
kgt.ss_set_param('swift_store_auth_address=', swift_store_auth_address),
kgt.ss_set_param('swift_store_create_container_on_put=', 'True'),
kgt.ss_set_param('swift_store_user=', 'services:swift'),
kgt.ss_set_param('swift_store_key=', swift_store_key),
])
kgt.execs([
kgt.systemctl(%w!restart openstack-glance-registry!),
kgt.systemctl(%w!restart openstack-glance-api!),
])