今天介紹一個單字, Provision
這個單字其實就如他字面上的翻譯差不多,
是準備或儲備的意思
在我們要開始使用虛擬機器之前
通常會有些目的
譬如,我是測試人員,我開一個新的VM的目的就是為了安裝我要測試的軟體
並開始測試
假設你是一個網頁開發人員,你的目的可能是要安裝 Web Server 和 Database
又如果是 app 開發人員,你需要安裝一個 android 模擬器
無論目的為何,我們通常不會只需要一台完全乾淨的VM
除非你本身就是開發作業系統的
我們也不希望安裝軟體這件事每開一個新的VM都要手動重新安裝,重新設定
所以我們就要在開啟新的VM之後,做一下 "Provision"
在做 Provision 時,我們會最常用的就是
Unix 的 shell script 和 windows 的 batch file
再來你可能會用 python
更進一步的你就可能會用 chef, puppet, salt 等等
Vagrant 讓你可以在 Vagrantfile 中定義如何做 Provision
Vagrant 也幾乎支援所有的 Provision 方式(chef, puppet, salt...)
讓你在開啟VM時,你的環境就已經安裝好你需要的軟體
在 Vagrantfile 中,我們會用到 config.vm.provision 這個設定
舉個例子,我希望VM在開啟時已安裝 vim 和 nginx
所以我寫了個 shell script
bootstrap.sh
apt-get update
apt-get -y install vim
apt-get -y install nginx
然後在把bootstrap.sh 放到與 Vagrantfile 同資料夾中
簡單的 Vagrantfile 如下
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision :shell, :path => "bootstrap.sh"
end
如此一來,
你在下 vagrant up 時
VM 就會自動跑 bootstrap.sh
很方便吧 :)