[CLUSTERPRO]CLUSTERPRO Dのインストールを自動化してみた。

2016.08.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、毎年ちゃんと夏バテをする城内です。

今回は、AWSから少し離れて、NECさんのCLUSTERPROを取り上げてみたいと思います。
当ブログでは、以前にも以下のような記事を書いていましたが、CLUSTERPROもXからDに進化しましたので、これからCLUSTERPRO Dの方を触っていこうかと思います。

はじめに

ということで、さっそく製品のインストールからいきたいと思います。

インストーラは以下のサイトからダウンロードできます。

また、マニュアルもダウンロードページから取得できますので、一緒にダウンロードし、参照しながら作業を進めましょう。

やってみた

インストール

と、今回はWindows Serverへのインストールを実際にやってみたのですが、さすがクラプロですね!あまりにサクッとできすぎて、記事1本分にも至りませんでした(笑)

インストーラをダブルクリックし、以下のウィザードに従って進んでいけば、すぐにインストールできます。
(インストール後にサーバ再起動が必要になります)

clpd-01

clpd-02

自動化

ということで、それだけでは記事として物足りないので、今回はインストール作業を自動化してみました!
手動でやっても大した作業ではないですが、昨今の自動化の波(?)を踏まえれば、コード化しておいて損はないでしょう。(たぶん

PowerShellを使って(初めて)書いてみましたが、以下の感じでインストールが実施できます。
一応、コピペで使えると思います。

install_clusterpro_d.ps1

# 変数定義
$int_returncode = 0
$str_current_dir = (Convert-Path .)
$str_current_script = $MyInvocation.MyCommand.Path

$str_clp_dl_url = "https://www.support.nec.co.jp/DownLoad.aspx?file=d10w_x64.zip&id=3140103047"
$str_clp_installer_zip_filename = "clusterpro_installer.zip"
$str_clp_installer_zip = (Join-Path $str_current_dir $str_clp_installer_zip_filename)
$str_clp_exe_prefix = "clznode-"

# 関数定義
function Fc-Logger($str_message) {
  $Now = Get-Date
  $str_output = "{0:0000}-{1:00}-{2:00} " -f $Now.Year, $Now.Month, $Now.Day
  $str_output += "{0:00}:{1:00}:{2:00}.{3:000} " -f $Now.Hour, $Now.Minute, $Now.Second, $Now.Millisecond
  $str_output += "$str_message"

  $str_logfile = $str_current_script.Replace(".ps1", "")
  $str_logfile += "_{0:0000}-{1:00}-{2:00}.log" -f $Now.Year, $Now.Month, $Now.Day

  Write-Output "$str_output" | Out-File -FilePath "$str_logfile" -Encoding Default -append

  Return "$str_output"
}

# メイン処理

# インストーラをダウンロードする
Invoke-WebRequest -Uri "$str_clp_dl_url" -OutFile "$str_clp_installer_zip"

if ( (Test-Path -Path "$str_clp_installer_zip") ) {
  Fc-Logger "[INFO] Downloading an installer was completed."
} else {
  Fc-Logger "[ERROR] Falied to download an installer file."
  $int_returncode = 1
  exit $int_returncode
}

$obj_explorer = New-Object -ComObject Shell.Application
$obj_zip_file = $obj_explorer.NameSpace($str_clp_installer_zip)
$obj_exp_dir = $obj_explorer.NameSpace($str_current_dir)

# ZIPファイルを解凍する(エクスプローラ操作で中身を外にコピー)
$obj_zip_file.Items() | ForEach-Object {
  $str_unzip_dir = $_.Path.Replace("$str_clp_installer_zip_filename\", "")
  $obj_exp_dir.CopyHere($_.Path, 0x0010)
}

$obj_unzip_dir = $obj_explorer.NameSpace($str_unzip_dir)

# 実行ファイルのパスを取得
$obj_unzip_dir.Items() | ForEach-Object {
  if ( $_.Path.Contains("$str_clp_exe_prefix") ) {
    $str_exe_file = $_.Path
  }
}

# インストーラをサイレントインストールモードで実行(自動再起動は抑止し、後続処理で実行)
Start-Process -FilePath "$str_exe_file" -ArgumentList "/S /v/norestart /v/qn" -Wait

$str_result = (Get-WmiObject -Class Win32_Product -Filter "Name = 'CLUSTERPRO D'")

if ( "$str_result" -eq "" ) {
  Fc-Logger "[ERROR] Installation failed."
  $int_returncode = 1
} else {
  Fc-Logger "[INFO] Installation was successful.
$str_result"
  Fc-Logger "[INFO] Server restart..."
  Restart-Computer -Force
}

exit $int_returncode

さいごに

こんな感じで、これからCLUSTERPRO Dを触っていきますので、ドシドシ記事にしてきたいと思います。
次は、セットアップの辺りで何か書きたいですね。

ではまたー。

参考情報

以下、コードを参考にさせてもらいましたm(_ _)m