OpenStack keystone のユーザーアカウントを yaml でいい感じにする kaname に裏口 API を使って自分が使っているアカウントのパスワードを変更する機能を作った。
OpenStack には auth url と management url の2つがあって、これらのエンドポイントに対してリクエストを投げることで大半のやりたいことは実行できる。ところが、OpenStack の凄いところはこの2つ以外にも幾つか API らしきリクエストを受け付ける口が点在していて、それを叩くと、エンドポイントの API では出来ないことが出来るという便利機能がある(まずい気しかしない)。
具体的にはこの辺を参照: https://github.com/hsbt/kaname/blob/master/lib/kaname/adapter/real.rb#L27
この機能を利用して、普通のエンドポイントでは、admin role がないと自分のパスワードを変更できないという制限を回避して、admin じゃなくてもパスワード変更を出来るようにした。使い方は
$ kaname password
で old/new 入れる感じでさくっと変わる。
なんでこんなものを作ったかというと、OpenStack の role は admin か admin じゃないか、の2つしかなく、admin になると、他のテナント(AWS で言うなら他のアカウント)の情報も見えるというハイパーなロールコントロールとなっているので、できるだけ使うときは member にしたいというのが理由。なんか policy の設定をちゃんとすれば制御できる、みたいなことも見かけたのでその辺の調査は追々。
OpenStack, IaaS を構築する基盤ソフトウェアなのに、Rails っぽく統廃合をバンバンやって進化しているのが凄いというか大丈夫かという感じがしていてワクワクする(棒読み)