SHOEISHA iD

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

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

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

XenServer SDK for PowerShellを使った仮想マシンのバックアップ自動化

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

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

XenServer SDK for Windows PowerShellによるスナップショット取得

 以降では、実際に「XenServer SDK for PowerShell」のSnapInを起動し、XenServer 5.6上に作成しているすべてのWindowsゲストのVolumeスナップショット作成を自動化するサンプルを説明します。

 サンプルコードはXenServer SDK for Windows Powershellのインストールフォルダ下(%ProgramFiles%\Citrix\XenServerPSSnapIn)にある「AutomatedTestCore.ps1」をベースに作成しています。

 今回のサンプルコードでは、XenAPIのVMクラスを使用して「AutomatedTestCore.ps1」に以下の2つの関数を追加し、テーブルコーディングされている自動化処理に2つの関数エントリを追加しました。不必要な部分は削除しました。

snapshotwithquiesce_vm関数

 本関数では第1引数にXENAPI.VMクラスのインスタンス、第2引数に新規作成するスナップショット名(文字列)を取ります。戻り値は新規に作成したスナップショットのXENAPI.VMクラスのインスタンスとなります。

function snapshotwithquiesce_vm([XenAPI.VM]$vm, [String]$new_name)
{
  log_info ("snapshotting vm '{0}' to '{1}'" -f $vm.name_label,$new_name)

  //第一引数で指定されたXenAPI.VMクラスのインスタンスを指定し、第二引数で指定された
  //スナップショット名で新規にスナップショットを作成する
  $vm = Invoke-XenServer:VM.snapshot -VM $vm -NewName $new_name

  return Get-XenServer:VM -name $new_Name
}

snapshotwihquiesce_running_allvms関数

 本関数ではGet-XenServer:VM Commandletを使用して、確立しているXenServerセッション内で実行中の状態で、Control Domain以外のインスタンスを取得します。

 取得された各インスタンスと本関数呼出時の日付を新規作成するスナップショット名として、前述のsnapshotwithquiesce_vm()を呼び出し、該当する仮想マシンのスナップショットを作成します。

function snapshotwihquiesce_running_allvms()
{
  //本関数呼び出し時の時刻を取得
  $new_name = Get-Date
  $running_vm_count=0

  //確立しているXenServerセッション内の仮想マシンを取得
  foreach ($vm in Get-XenServer:VM)
  {
    //電源状態の確認(実行中以外はcontinueする)
    if ($vm.power_state -ne "Running")
    {
    continue
    }
    //仮想マシンがControl Domainかどうかの確認
      //Control Domainの場合にはcontinueする
    elseif($vm.is_control_domain)
    {
    continue
    }
      //上記以外の仮想マシンの場合にはsnapshotwithquiesce_vm()には
      //仮想マシンのインスタンスと関数の先頭で取得した日付をスナップショット名にして
      //各仮想マシンのスナップショットを取得する
    else
    {
        $running_vm_count++
        snapshotwithquiesce_vm $vm $new_name
        log_info("powerstate:'{0}', '{1}'" -f $vm.power_state, $vm.name_label)
    }

  }

  log_info ("snapshotting running all vm count '{0}'" -f $running_vm_count)
}

次のページ
コードサンプル

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

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

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング