快速佈署開發與測試環境的虛擬環境 by Vagrant

快速佈署開發與測試環境的虛擬環境

這篇文章主要說明如何利用 Vagrant 來快速的部署開發與測試所需的環境。

用 Virtual Machine 不就好了嗎? 問題在於每一個 Virtual Machine image 多半超過2G 以上,

如果每一次小小的系統修改,就要重新複製這麼大的檔案,有些不方便。

而且系統的修改也很難釐清跟版本管哩,

因此 Vagrant + Puppet 這兩套工具就式來解決這些問題。

Vagrant的誕生

Vagrant 可以用來提供虛擬環境,並且可以在 command line 下操作,

方便自動化程式使用,另外該虛擬環境可以用 puppet or Chef 做環境系統的修改,

進一步達到 Infra as code 的版本控管。

Vagrant 到底是什麼呢?

筆者認為可以把 Vagrant 想成是 VirtualBox 的指令模式版本。

不同的是,Vagrant 可以支援VirtualBox 之外,也可以支援VMware

透過 Vagrant 啟動的虛擬作業系統,

可以很簡便的設定主機與該虛擬機器的 Shared folder

另外,由Vagrant 啟動的作業系統,

可以指定預設開機時候,需要做怎樣的系統修改,

所需要的系統修改,就可以透過 puppet 完成。

puppet 就類似 Windows 的 autoexec.bat 一樣,

會在開機的時候,將定義好的系統需求修改執行完畢。

如何執行 Vagrant?

首先必須要安裝 VirtualBox and Vagrant

安裝完之後,於指令模式下執行下列三個指令,

即可完成一台虛擬機器的下載與開機

$ vagrant box add precise64 http://files.vagrantup.com/precise64.box
$ vagrant init precise64
$ vagrant up

這三個指令完成什麼事情呢?

  • 首先,Vagrant 會到 http://files.vagrantup.com/precise64.box 下載一個 virtual machine image
  • 接著做初始設定,Vagrantfile
  • 最後 Vagrant up 會將該虛擬機器開機

是不是很方便?

問題式開機後,如果我希望預設安裝 Apache 或是修改一些系統設定要如何進行?

這時候就必須進一步定義 Vagrantfile,Vagrantfile是啟動該虛擬機器的一個設定檔案,類似 Windows 的Autoexec.bat或是 boot.ini。

Vagrant 基本指令

指令 說明
vagrant init 建立初始設定檔案Vagrantfile
vagrant up 將虛擬機器開機
vagrant halt 關機
vagrant destroy 關機並且移除虛擬機器
• vagrant suspend / vagrant resume 將虛擬機器暫停/繼續
• vagrant ssh SSH 至該虛擬機器

 

Vagrantfile

這個檔案是 vagrant 每次啟動虛擬機器的時候都會參考的設定檔案。基本設定值說明如下:

設定值 說明
config.vm.box 虛擬環境的名稱
config.vm.box_url 下載虛擬環境的網址
config.vm.network 網路設定

Port forwarding, Private vs. public networks

config.vm.synced_folder 虛擬機器與 host Shared folder 的設定
config.vm.provision 可以指定使用 puppet or chef

如果可以善加運用 Vagrant + Puppet 就可以對於環境的佈署與修改做更容易的控管。

未來當新人加入團隊的時候,就可以直接給他所需環境的程式碼,

讓 Vagrant + puppet 執行來創建所需的開發或是測試環境。

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *