LoginSignup
12
9

More than 5 years have passed since last update.

vagrantの操作が楽になる便利なコマンドセレクター

Posted at

少ないコマンドで簡単に仮想環境を構築・管理できるので
vagrant便利ですよね。

でも特にwindowsで使う場合、コピー&ペーストさえも使いにくい
コマンドプロンプトの都合で使いやすいといいにくい場面が、
度々あります。

vagrant関連で使うコマンドをbatファイルにまとめて
セレクターにしてみました。

これを使うことで文字の入力等はほとんど必要なくなります。

また、下のほうに「Vagrantfile」ファイルの加工で、
よく使う設定を自動化するようにできるvbsファイルも記載しておきました。

下記のコメントアウトをコメントインにします
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"

vagrant_menu.bat
@echo off

cd /d %~dp0

echo ************ 実行ディレクトリ ***********************************
cd 
echo;

rem ===【basic】======================================================
:basic

echo ************ アプリケーションメニュー ***************************
echo [1] : vagrant up
echo [2] : vagrant halt
echo [3] : vagrant reload
echo [4] : vagrant box list
echo [5] : vagrant plugin list
echo [6] : 【init】
echo [7] : 【other】
echo [8] : 【sahara】

echo *****************************************************************
set /p NUM="起動したいアプリケーションを選択してください >"
if "%NUM%"=="1" vagrant up
if "%NUM%"=="2" vagrant halt
if "%NUM%"=="3" vagrant reload
if "%NUM%"=="4" vagrant box list
if "%NUM%"=="5" vagrant plugin list
if "%NUM%"=="6" call :init
if "%NUM%"=="7" call :other
if "%NUM%"=="8" call :sahara

cmd /k
exit /b

rem ===【init】=====================================================
:init

echo ************ アプリケーションメニュー ***************************
echo [1] : 公式 centos-6.7 add
echo [2] : 公式 centos-6.7 init
echo [3] : bento
echo [4] : bentoにアップデート等最小限の設定を追加したもの
echo [5] : メイン
echo [6] : プロジェクト1
echo [7] : プロジェクト2

echo *****************************************************************
set /p NUM="起動したいアプリケーションを選択してください >"
if "%NUM%"=="1" vagrant box add vagrant-centos-6.7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
if "%NUM%"=="2" vagrant init vagrant-centos-6.7
if "%NUM%"=="3" vagrant init bento/centos-6.7
if "%NUM%"=="4" echo "設定されていません。"
if "%NUM%"=="5" echo "設定されていません。"
if "%NUM%"=="6" echo "設定されていません。"
if "%NUM%"=="7" echo "設定されていません。"

cmd /k
exit /b

rem ===【other】=====================================================
:other

echo ************ アプリケーションメニュー ***************************
echo [1] : パッケージ化
echo [2] : VirtualBoxのGuest Additionsを再インストール
echo [3] : .vagrantディレクトリ削除
echo [4] : 同期フォルダを用意

echo *****************************************************************
set /p NUM="起動したいアプリケーションを選択してください >"
if "%NUM%"=="1" vagrant package
if "%NUM%"=="2" vagrant plugin install vagrant-vbguest & vagrant vbguest --status
if "%NUM%"=="3" rd /s /q directory .vagrant
if "%NUM%"=="4" mkdir ../data & mkdir html

cmd /k
exit /b

rem ===【sahara】=====================================================
:sahara

echo ************ アプリケーションメニュー ***************************
echo [1] : vagrant plugin list
echo [2] : vagrant plugin install sahara
echo [3] : vagrant sandbox status
echo [4] : vagrant sandbox on
echo [5] : vagrant sandbox off
echo [6] : vagrant sandbox rollback

echo *****************************************************************
set /p NUM="起動したいアプリケーションを選択してください >"
if "%NUM%"=="1" vagrant plugin list
if "%NUM%"=="2" vagrant plugin install sahara
if "%NUM%"=="3" vagrant sandbox status
if "%NUM%"=="4" vagrant sandbox on
if "%NUM%"=="5" vagrant sandbox off
if "%NUM%"=="6" vagrant sandbox rollback

cmd /k
exit /b

rem ===【main】===================================================
call :basic

cmd /k
pause


rem =======================================
rem vagrant トラブル 対応
rem =======================================
rem Linuxにsshログインして、ルート権限になって
rem 各種アップデートして、再起動させる。
rem
rem  sudo yum -y install update kernel-devel kernel-headers gcc gcc-c++ > LOG_Guest_Additions.txt; sudo reboot
rem
rem  ゲストOSにauthorized_keyを追加する
rem  wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O .ssh/authorized_keys
rem
rem  パッケージングする前のゲストOSでMACアドレスとのマッピングを無効にします。
rem  sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
vagrant_rename_Vagrantfile.vbs
Dim MyFile 
Dim myRec
Dim FS

Dim VAGRANTFILE_DIR

Dim before_A
Dim after_A

Dim before_B
Dim after_B

Set objWshShell = CreateObject("WScript.Shell")

VAGRANTFILE_DIR = objWshShell.CurrentDirectory & "\Vagrantfile"

Set FS = CreateObject("Scripting.FileSystemObject")
Set MyFile = FS.OpenTextFile(VAGRANTFILE_DIR)
'テキストデータ読込
myRec = MyFile.ReadAll
'msgbox myRec
'テキスト変換
myRec = replace(myRec,"# config.vm.network ""forwarded_port"", guest: 80, host: 8080","config.vm.network ""forwarded_port"", guest: 80, host: 8080")
myRec = replace(myRec,"# config.vm.network ""private_network"", ip: ""192.168.33.10""", "config.vm.network ""private_network"", ip: ""192.168.33.10""")
'msgbox myRec
MyFile.Close

'書き込み
Set MyFile = FS.CreateTextFile(VAGRANTFILE_DIR)
MyFile.WriteLine (myRec)
MyFile.Close
12
9
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
12
9