Vagrant up, Vagrant haltが面倒臭い
Vagrant、日々の勉強に重宝しています。
でも、環境で必要になるサーバーの数が増えてくると、各サーバの起動・停止が面倒ですよね。
ぼくは最近、勉強でOSSの認証システムOpenAMを触っています。
一応いろいろなサーバー構築の勉強からしようと思ったので
・OpenAMサーバー
・DBサーバー
・リバプロサーバー
・アプリサーバー
をVagrantを使って用意しました。
でも、
環境立ち上げるたびに「vagrant global-status実行して必要なサーバーのID取得してからvagrant up <取得ID>」とか、
「VagrantFIleがあるパスまで移動してからvagrant up打つ」とか、
正直面倒臭い。
そこで、実行するだけでリスト記載のマシンを起動・停止してくれるスクリプトを作成しました。
初めてpowershell書いたので慣習とか全然わからずノリで書いてます。
コメントなどあればお願いします。
環境
Windows 10 pro
Power Shell 5.1.17134.590
ソース
# box名を列挙
ldap01,wam01,rp01,app01
# ロガー関数
Function Logger($script_name, $level, $message){
Write-Host "[" (Get-Date) "]" ${script_name} ${level}, ${message}
}
# 環境変数を設定
$vagrant_dir = "C:\Users\banbo\vagrant"
# csvからbox名を読み込み
$box_list = Get-Content ${vagrant_dir}\openam_box.csv
$global_status = vagrant global-status
$my_name = $myInvocation.MyCommand.name
# ロガー関数を読みこみ
.${vagrant_dir}\logger.ps1
# box名からidを取得
Function Get-BoxId($box_name){
$up_box = $global_status | Select-String $box_name
$box_info = $up_box -split " "
return $box_info[0]
}
# idを指定してマシンを起動
Logger($myname, "INFO", "Process start" )
$box_array = $box_list -split ","
foreach($box_name in $box_array){
Logger($myname, "INFO", "Booting ${box_name}" )
$box_id = Get-BoxId $box_name
vagrant up $box_id > ${vagrant_dir}\vagrant.log
if ($? -ne "True"){
Logger($myname, "ERROR", "Booting ${box_name} failed" )
}
}
Logger($myname, "INFO", "Process end" )
実行結果
PS C:\Users\banbo\vagrant> .\up_openam.ps1
[ 2019/03/03 20:28:57 ] INFO Process start
[ 2019/03/03 20:28:57 ] INFO Booting ldap01
[ 2019/03/03 20:29:47 ] INFO Booting wam01
[ 2019/03/03 20:30:32 ] INFO Booting rp01
[ 2019/03/03 20:31:17 ] INFO Booting app01
[ 2019/03/03 20:32:02 ] INFO Process end
PS C:\Users\banbo\vagrant>
PS C:\Users\banbo\vagrant> vagrant global-status
id name provider state directory
-------------------------------------------------------------------------
71a7ccb default virtualbox poweroff C:/Users/banbo/vagrant/box
a7ea139 default virtualbox running C:/Users/banbo/vagrant/wam01
9fb60e8 default virtualbox running C:/Users/banbo/vagrant/ldap01
4319c7b default virtualbox running C:/Users/banbo/vagrant/rp01
08fb19e default virtualbox running C:/Users/banbo/vagrant/app01
ちなみに停止するには、スクリプト内でvagrant upしているところをvagrant haltに変えてやれば基本的にOKです。
あとはログメッセージを合わせてやれば、それっぽい動きになります。