Loading...
2014年8月27日水曜日

HTML5 Console Access from Windows PC (Done)



前のエントリーで実現しきれなかった、Windows PC からの HTML5 コンソールへのアクセスが実現できましたのでご報告。

原因は、チケットを vCenter の CloneTicket としなければならないところを、仮想マシンの MKS Ticket としていたためです。CloneTicket は、現在のセッションと同じユーザーで vCenter にログインすることができる 短時間のみ有効、かつ、1 回だけ使用可能なチケットです (参考)。チケットの "cst-VCT-" を見たときに、「どこかで見た文字列だな」とは思っていたのですが、3 年以上前のお仕事で CloneTicket を使ったときのモノでした。

MKS チケットはコンソールを開くためには必要な手続きなので、vCenter 側の Jetty 内部で使われていると思われます。Jetty から CloneTicket で vCenter にログインし、仮想マシンへの操作権限を確認しているんではないかと。

なお、VMware の Technical Marketing Engineer の William Lam 氏が 1 年前にすでに Blog で実現されていました。

修正した PowerCLI スクリプトは以下になります。

$VCenterThumbprint = "AA:BB:CC:DD:EE:FF:GG:HH:II:JJ:KK:LL:MM:NN:OO:PP:QQ:RR:SS:TT"
$VCenter = "vc-l-01sp.xxx.yyy"

Add-PSSnapin VMware.VimAutomation.Core
Connect-VIServer vc-l-01sp -User xxxx -Password zzzz

$Vm = Get-VM polaris

$SessionManager = Get-View $global:DefaultVIServer.ExtensionData.Content.SessionManager

$CloneTicket = $SessionManager.AcquireCloneTicket()

$VmName = $Vm.Name
$VmId = $Vm.ExtensionData.MoRef.Value
$SessionTicket = $CloneTicket

$URL = "http://"+$VCenter+":7331/console/?vmId="+$VmId+"&vmName="+$VmName+"&host="+$VCenter+"&sessionTicket="+$SessionTicket+"&thumbprint="+$VCenterThumbprint

& 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe' $URL

Disconnect-VIServer -Confirm:$false

1-2 行目: vCenter のホスト名と証明書の Thumbprint です。Thumbprint は PowerCLI では取れないようなので、どうしても Script で実現したいときは [Net.WebRequest] などを駆使してみるといいかもしれません
4-5 行目: PowerCLI の Snapin を追加し、vCenter に接続しています。
7 行目: 仮想マシン polaris のオブジェクト ID を取得しています。
9-11 行目: 今回の肝です。URL に渡すチケットは vCenter のログイン セッションの情報をクローンしたチケットです。SessionManager の AcquireCloneTicket() から取得します。
13-20 行目: URL を生成し、ブラウザーを起動します。
22 行目: vCenter への接続を切断します

もう少し気軽に HTML5 コンソールが利用できると良いのですが。
2014年8月27日水曜日

0 コメント:

コメントを投稿

Things

 
TOP