SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

XenServer自動化スクリプティング集

XenServer SDK for PowerShellを使ったXenServer仮想環境の自動化

XenServerスクリプティング(1)


  • X ポスト
  • このエントリーをはてなブックマークに追加

XenServer SDK for PowerShellを使ってみる

 XenServerホストの準備が整ったら、さっそく、XenServer PowerShell SnapInを起動して使ってみましょう。

※注2

 PowerShell SnapIn初回起動時、「警告: ExecutionPolicy is set to Restricted. Some XenServer commands are disabled.」という警告が表示されることがあります。この警告が表示されたら、Windows PowerShell標準のコマンドラインウインドウを[管理者として実行]し、「Set-ExecutionPolicy RemoteSigned」コマンドを実行してセキュリティを緩和してください。

 今回は、基本的なXenAPIの単独実行、およびPowerShellのパイプラインやスクリプトブロックを使った1行完結型の初級編コマンドサンプルを紹介します。

XenServerコマンドレットを確認する

 まずはじめに、PowerShell SDKで追加されたXenServerのコマンドレットを確認してみましょう。PowerShell SnapInウインドウ内で次のコマンドを実行します。

Get-Command -Noun XenServer*

 800を超える登録が確認できます。いずれも、PowerShell標準のVerb-Nounという命名規則に従っています。

PowerShell SnapInからホストへ接続

 [Citrix XenServer PowerShell SnapIn]を使用するための最初のステップは、XenServerホストへの接続を確立することです。PowerShell SnapInのコマンドラインから、以下のコマンドをホストのipアドレスまたはホスト名を指定して実行します。プール構成の場合、デフォルトではプールマスタにしか接続できません。

コマンドサンプル1:PowerShell SnapInからホストへ接続する
Get-Credential | Connect-XenServer –url https://ホストのipアドレス

 資格情報を要求するダイアログが表示されたら、rootユーザーとそのパスワードを指定して[OK]をクリックします。

VMを新規作成
コマンドサンプル2:VMを新規作成する
Create-XenServer:VM -NameLabel "New Test VM" -VCPUsAtStartup 1 -MemoryDynamicMax 256MB -MemoryStaticMax 256MB -MemoryDynamicMin 256MB -MemoryStaticMin 256MB -MemoryTarget 256MB

 "New Test VM"という名前のVMが、仮想CPU1個、仮想メモリ256MBの構成で作成されたことをXenCenterで確認してみましょう。

VMを削除
コマンドサンプル3:VMを削除する
Destroy-XenServer:VM -VM "New Test VM"

 XenCenter上から"New Test VM"が消えたことを確認します。

テンプレートを使ってVMを新規作成

 name_labelには、XenServer 5.6の場合"Windows XP SP2 (32-bit)"を、XenServer 5.5の場合"Windows XP SP2"を指定します。

コマンドサンプル4:テンプレートを使ってVMを新規作成する
Get-XenServer:VM –properties @{ name_label="Windows XP SP2 (32-bit)"; is_a_template="True" } | Invoke-XenServer:VM.Clone –NewName "XPVM" | Invoke-XenServer:VM.Provision -ErrorAction SilentlyContinue
※注3

 UUID_INVALIDというエラーが表示されますが、まだ仮想ディスクが無いからで、この場合は無視可能です。このエラーの影響でホストとの接続が切れるのを防ぐため、-ErrorAction SilentlyContinueパラメータを付けています。

 XenCenterで"XPVM"というVMが作成されたことを確認します。この時点ではディスクやNICが付いていません。

仮想ディスクを作成し、VMに取り付け

 ストレージレポジトリ名には、使用するストレージのXenCenter上の表示名を指定します。

コマンドサンプル5:仮想ディスクを作成し、VMに取り付ける
Create-XenServer:VDI –NameLabel "Disk for XPVM" –SR "ストレージレポジトリ名" –VirtualSize 10GB | Create-XenServer:VBD –VM "XPVM" –UserDevice 0 –Mode RW –Type Disk –Bootable 1

 "XPVM" に "Disk for XPVM"という仮想ディスクが取り付けられたことを確認します。

VMに仮想CDドライブを取り付け
コマンドサンプル6:VMに仮想CDドライブを取り付ける
Create-XenServer:VBD –VM "XPVM" –UserDevice 3 –Mode RO –Type CD -Bootable 0 -Empty 1  

 "XPVM"にCDドライブが作成されたことを確認します。

VMに仮想ネットワークカードインターフェイスを割り当て
コマンドサンプル7:VMに仮想ネットワークカードインターフェイスを割り当てる
Get-XenServer:Network -Name "eth0" | Create-XenServer:VIF –VM "XPVM" –Device 0 –MAC 11:22:33:44:55:66

 "XPVM"にネットワークが取り付けられたことを確認します。

 以上で、"XPVM"という仮想マシンを作成し、OSをインストールする準備ができました。次のコマンドサンプルへ進む前に、ホスト実機のCDドライブへWindows XP with SP2のインストールディスクを挿入し、"XPVM"の[ストレージ]タブにあるCDドライブプルダウンでそのCDドライブを手動選択しておいてください。

VMを起動

 以下のコマンドは、"XPVM"をシャットダウンした状態で実行してください。

コマンドサンプル8:VMを起動する
Invoke-XenServer:VM.Start -VM "XPVM"

 XenCenterで"XPVM"が起動されたことを確認します。

 ここで、XenCenterを使ってVM内のWindows XP SP2インストールを完了させます。なお、OSのインストール完了後はXenServer-Toolsのインストールも忘れずに実行してください。XenServer-Toolsをインストールしないと、XenMotionや、API経由の通常(非強制)シャットダウンができません。

 VMのCDドライブにディスクが挿入されていると、後続のサンプル実行の支障となる場合があるので、次のコマンドでCDをイジェクトします。

VMからCDをイジェクト
コマンドサンプル9:VMからCDをイジェクトする
Get-XenServer:VM.VBDs -VM "XPVM" | Where-Object { $_.type -eq "CD" } | Invoke-XenServer:VBD.Eject

 "XPVM"のCDドライブが空になったことを確認します。

VMをシャットダウン
コマンドサンプル10:VMをシャットダウンする
Invoke-XenServer:VM.CleanShutdown -VM "XPVM"

 "XPVM"がシャットダウンされたことを確認します。

仮想マシン"XPVM"から、"XPVM01"~"XPVM03"という3台のVMを高速複製

 以下のコマンドは、"XPVM"をシャットダウンした状態で実行してください。

コマンドサンプル11:仮想マシン"XPVM"から、"XPVM01"~"XPVM03"という3台のVMを高速複製する
For($i=1; $i -lt 4; $i++) { Invoke-XenServer:VM.Clone -VM "XPVM" -NewName ("XPVM0" + $i) -RunAsync }

 -RunAsyncは、処理を非同期実行する指定です。

"XPVM01"~"XPVM03"を特定のホストで起動

 以下のコマンドは、"XPVM01"~"XPVM03"をシャットダウンした状態で実行してください。起動先ホスト名には、ホストのXenCenter上の表示名を指定します。

コマンドサンプル12:"XPVM01"~"XPVM03" を特定のホストで起動する
$i=1; Do { Invoke-XenServer:VM.StartOn -VM ( "XPVM0" + $i ) -Host "起動先ホスト名" -RunAsync; $i++ } While ( $i -lt 4 )
※注4

 512MBのVMを3台起動するので、実行するには起動先ホストに約1.5GBの空きメモリが必要です。

 各VMのOSが完全に起動し、XenCenterの[全般]タブで仮想化の状態が"最適化済み"になるまでしばらく待ちます。

"XPVM01"~"XPVM03"を、別のホストへマイグレーション(XenMotion)

 以下のコマンドは、"XPVM01"~"XPVM03"を同一ホストで起動した状態で実行します。ホスト2台以上のプール構成でなければ実行できません。移行先ホスト名には、ホストのXenCenter上の表示名を指定します。

コマンドサンプル13:"XPVM01"~"XPVM03"を、別のホストへマイグレーション(XenMotion)する
1..3 | ForEach-Object { Invoke-XenServer:VM.PoolMigrate –VM ( "XPVM0" + $_ ) –Host "移行先ホスト名"  –Options @{ live = "True" } -RunAsync }

 ハッシュ配列 @{ live = "True" }を指定するのは、XenMotion実行時の決まりです。

起動中の"XPVM01"~"XPVM03"をシャットダウン

 以下のコマンドは、"XPVM01"~"XPVM03"を起動した状態で実行してください。

コマンドサンプル14:起動中の"XPVM01"~"XPVM03"をシャットダウンする
ForEach ( $i in 1..3 ) { Invoke-XenServer:VM.CleanShutdown –VM ( "XPVM0" + $i ) -RunAsync }

 強制シャットダウン(電源オフ)を実行したい場合は、VM.CleanShutDownの代わりにVM.HardShutdownを使用します。

PowerShell SnapInをホストから切断
コマンドサンプル15:PowerShell SnapInをホストから切断する
Disconnect-XenServer –url https://ホストのipアドレス

XenAPI命令を独習するには

 PowerShell SDKを使って意図したとおりのスクリプトを書くには、ある処理を実行するのにどのXenAPI命令が必要であるかを把握していなければなりません。

 それには、XenCenterを使ってGUI操作をしたときにバックグラウンドで発生するXenAPIの流れを、ログを観察して模倣するのが早道です。

 XAPIデーモンのログはXenServerホスト上の/var/log/xensource.logに記録されています。XenCenterのGUIからいろいろな操作を実行し、xensource.logにどのようなログレコードが記録されるかモニタしてみましょう。

 また、XenServer SDKページでサンプルコードが共有されているので、それも活用しましょう。

XenServer SDK関連の参考資料

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
XenServer自動化スクリプティング集連載記事一覧
この記事の著者

シトリックス・システムズ・ジャパン株式会社(シトリックス・システムズ・ジャパン カブシキガイシャ)

シトリックス・システムズ・ジャパン株式会社

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5212 2010/06/09 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング