作者:陳冠穎 / 臺灣大學計算機及資訊網路中心作業管理組幹事
部署伺服器一直是IT人員工作中重要的一環,而一次部署多台機器的情境更是時有所聞。目前主流的程式開發人員,皆希望透過版本控制方式,詳細記載每個更動過的記錄,那在部署機器的環境中,是否也能透過程式碼的方式,詳實記載每個步驟呢?今天就透過Vagrant此款工具,用程式的方式進行部署,能夠標準化每個步驟,對於後續的維護及部署自動化皆能省下不少寶貴的時間。
此次的示範實體機為Windows server 2012R2,安裝的軟體有VirtualBox、Vagrant及Git。
(示範的VirtualBox版本為5.1.6,VirtualBox及VirtualBox Extension Pack建議依照同版號進行安裝)
1. 下載VirtualBox 5.1.6 for Windows hosts
2. 下載VirtualBox 5.1.6 Oracle VM VirtualBox Extension Pack
3. 下載Vagrant
4. 下載Git
再依照下載的順序依序安裝。
![](001/Upload/354/ckfile/8d8668cb-b0dc-409b-a2c6-6f344df19a84.jpg)
圖一 VirtualBox安裝
![](001/Upload/354/ckfile/c112f1f3-b9f4-4ae2-8831-71657521cd7c.jpg)
圖二 VirtualBox Extension Pack安裝
![](001/Upload/354/ckfile/d21ab2f0-a2a0-47ec-a5e4-b875e4c4ed4d.jpg)
圖三 Git安裝
完成前置步驟後,我們可以開始考慮VM要用什麼作業系統。在Vagrant中每個Box就是一個已經打包好的作業系統,在Hashicorp網站中,已經有很多現成的作業系統可以直接下載使用。
Hashicorp網址: https://atlas.hashicorp.com/boxes/search
虛擬機初始化
接著,我們打開已經安裝好的Git 開始使用Vagrant來進行部署。為了方便說明,先在桌面開啟一個資料夾,之後的虛擬機檔案都將在此資料夾內進行。先開出一個Ubuntu來試試看吧!
指令如下
1.cd Desktop
2.mkdir test
3.cd test
4.vagrant init Ubuntu/trusty64
5.vagrant up
在完成指令5後會開始下載Box的檔案,在等待的同時我們先來說明一下指令,指令1~3步驟為在桌面開啟一個資料夾,名稱是test。指令4 是建立一個以Ubuntu14.04 64位元版本的初始化檔案。Test資料夾內會多一個Vagrantfile,這就是此台機器的設定檔,若是要增加記憶體、網路設定、檔案存放位置等,都是編輯這份檔案。
Vagrant基本設定
用編輯器打開vagrantfile,裡面有詳細的註解說明設定檔,以下就簡短的說明設定。
第15行,config.vm.box = "ubuntu/trusty64" 為使用的Box版本,例如是Ubuntu 16.04,就換成ubuntu/xenial64。
第22行到第34行是說明Network設定,分為用Forwarded Port、Private Network或Public network方式。將Forwarded port註解拿掉,這次實驗先用的Forwarded Port方式進行。
![](001/Upload/354/ckfile/f6563beb-a193-4773-8acb-bda1e31a9e69.jpg)
圖四 Forwarded Port設定
第40行是設定Synced Folder,雖然是透過虛擬機的方式架設,但是檔案依然可以與本機共用。我們暫時不進行更動。
第46行到第52行設定虛擬機的GUI及Memory大小。若是Host的資源足夠,可以試著將Memory調大,增加虛擬機的資源。這部分我們也暫時不進行更動。
第67行到第70行,可以寫一些簡單的Script去做一些系統更新、安裝等動作,將註解拿掉,改為圖五代碼,並執行Vagrant provision將重新執行設定檔,會自動進行update及安裝apache2。
若是未來有更多的步驟需進行,Vagrant也可以增加如Puppet、Chef、Ansible等工具來簡化管理。
![](001/Upload/354/ckfile/3f29f898-7dec-49df-9421-b08c47265941.jpg)
圖五 Vagrantfile設定檔
經過上述步驟,待執行完畢。我們再輸入vagrant ssh可以登入剛剛所建立的虛擬機環境,Vagrant會幫我們建立預設一組帳號,用使用者名稱Vagrant的帳號登入,如圖五。
![](001/Upload/354/ckfile/6b395feb-0355-45bd-aad5-70130b5c4efb.jpg)
圖六 使用vagrant ssh登入
也可以利用Host本機的瀏覽器輸入網址http://localhost:8080/,成功帶我們到剛所建立的Apache預設頁面。
![](001/Upload/354/ckfile/ad34c89b-b9ff-406c-871d-151330701b26.jpg)
圖七 Apache2預設頁面
若是要回到原本Host的控制,只要輸入exit就回到原先Host的控制。
![](001/Upload/354/ckfile/15cbfa38-65db-43f3-b4ae-867f988a95fa.jpg)
圖八 離開虛擬機
虛擬機部署的階段就告一段落了,以下再提供一些常用的Vagrant指令供使用。在操作的同時,也可以開啟Virtual Box圖形化介面觀看操作的變化。
Vagrant基本指令
vagrant init / 初始化
vagrant up / 啟動
vagrant halt / 關機
vagrant destroy / 刪除
vagrant status / 查看虛擬機的狀態(關機、開機)
vagrant ssh-config / 查看基本登入資訊
![](001/Upload/354/ckfile/33417094-c43c-414e-a359-2d83017ad834.jpg)
圖九 使用指令將虛擬機關閉
總結
透過Vagrant進行虛擬器的部署,是非常的方便與省力。若是後續仍有想要多了解的,可以參考官方說明文檔:https://www.vagrantup.com/docs/。
參考資料
1.Vagrant官方網站
https://www.vagrantup.com/
2. 在 Windows 用 Vagrant 快速建立你的 Linux 環境
https://gist.github.com/chgu82837/ab1255846b5335407105
3.Hashicorp官方網站
https://www.hashicorp.com/