少ないコマンドで簡単に仮想環境を構築・管理できるので
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