title | tags | author | slide |
---|---|---|---|
Vagrant+VirtualBoxでの環境構築を(半)自動化 |
Vagrant VirtualBox シェルスクリプト |
sayuprc |
false |
面倒くさい環境構築を(半)自動化して楽しよう!というのが今回の目的です。
VagrantとVirtualBoxをそれぞれインストールする。
VMを入れるフォルダを作り
$ mkdir project
そこで初期化
$ cd project
$ vagrant init
変更点のみ記述します。
# 15行目
config.vm.box = "使いたいOS"
# 35行目(コメントを外す)
config.vm.network "private_network", ip: "192.168.33.10"
# 66行目
config.vm.provision "shell", :path => "provision.sh", :privileged => false
この行を記述することにより、初回のvagrant up
の際にprovision.sh
に記述されている内容を実行してくれます。
そのおかげでyum update
などのゲストOS上で行うインストール作業などを自分で入力することなく終わらせることができます。
:pathはprovision.shファイルのある場所を指します。
:privilegedはデフォルトだとtrueで、管理者権限でコマンドを実行してしまいます。
yum update
などは問題ないと思いますが、anyenvなどをインストールするする際は、設定を変える必要が出てくるので、falseにすることをおすすめします。
1.provision.shをちゃんと作成すること。
作成しないと普通にvagrant up
されるか、エラーが出てvagrant up
できません。(未検証なので検証後正確な情報を書きます。)
2.インストールなどの許可
yum install ~~
などのように書いてしまうと、y/nを問われ途中でシェルスクリプトが止まってしまうので-y
をつけるか、echo y\n
としましょう。
3.PATHを記述するものの扱い
.bash_profileなどにPATHを記述するもの(anyenvなど)をインストールする場合、exec $SHELL -l
とすることが多いですが、シェルスクリプトにこう書いてしまうと途中でプログラムが終わってしまうのでsource ~/.bash_profile
のように書きましょう。
そうすることで最後までプログラムを実行してくれます。
たぶんもっと楽な方法はあると思います。(自動化ツールなど) ですがこの方法は手軽にできる点でおすすめです。 編集したVagrantfileやprovision.shを保存しておけばコピーして再度使えるので、もし環境を破壊してしまったとしてもやり直しが楽になります。