2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vagrant boxが多いのでpowershellスクリプトでまとめて起動・停止する

Last updated at Posted at 2019-03-03

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

ソース

openam_box.csv
# box名を列挙
ldap01,wam01,rp01,app01
openam_box.csv
# ロガー関数
Function Logger($script_name, $level, $message){
    Write-Host "[" (Get-Date) "]" ${script_name} ${level}, ${message}
}
up_openam.ps1
# 環境変数を設定
$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です。
あとはログメッセージを合わせてやれば、それっぽい動きになります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?