ClousStackのログインをLDAPにするには、APIからコマンドを実行しなければいけないようです。
APIのURL生成がかなりめんどくさいので、生成用のスクリプトを使わせてもらうことにします。
ここのスクリプトを使おうと思ったんですが、エンコード処理がうまくいかなかったので、
ここのを使わせてもらうことにしました。
まず、
my $site = "http://*.*.*.*/client/api?";
の”*”を自分のサイトのIPアドレスに変更しておきます。
使い方はこんな感じです。
generate-url.pl -f 3 -u (コマンド) -a (APIキー) -s (Secretキー)
コマンドの作り方は、Administrator Guideに書いてあります。
組み合わせるとこんな感じになります。
generate-url.pl -a (APIキー) -s (Secretキー) -f 3 -u "command=ldapConfig&port=389&queryfilter=%28%26%28uid%3D%25u%29%29&searchbase=dc%3Dexample%2Cdc%3Dcom&hostname=(LDAPサーバのIPアドレス)&response=json"
成功すると、こんな応答が返ってきます。
{ "ldapconfigresponse" : { "ldapconfig" : { "queryfilter" : "(&(uid=%u))", "hostname" : "LDAPサーバのIPアドレス", "port" : "false", "searchbase" : "dc=example,dc=com" } } }
あと、MD5 hashに関するバグがあるようで、 Cloudstack 3.x LDAP Authentication - Disabling MD5 hashの設定変更が必要になります。
/usr/share/cloud/management/webapps/client/scripts/sharedFunctions.js を
var md5HashedLogin = false;
に変更し、 CloudStackの再起動が必要になります。
service cloud-management restart
あらかじめローカルにユーザを作っておかないといけないようですし、LDAPサーバ障害時を考慮して、adminとか特定のユーザのみローカル認証にするとかもできないようです。
また、なんかトラブルの後、ログインできなくなることが多々あります。 その場合は、cloud-setup-managementコマンドを実行し、インストールし直すともとのローカル認証でログインできるようになります。(これが問題ないかどうかは分かりません・・・)