作者:陳冠穎 / 臺灣大學計算機及資訊網路中心作業管理組幹事
部署伺服器一直是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
再依照下載的順序依序安裝。
圖一 VirtualBox安裝
圖二 VirtualBox Extension Pack安裝
圖三 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方式進行。
圖四 Forwarded Port設定
第40行是設定Synced Folder,雖然是透過虛擬機的方式架設,但是檔案依然可以與本機共用。我們暫時不進行更動。
第46行到第52行設定虛擬機的GUI及Memory大小。若是Host的資源足夠,可以試著將Memory調大,增加虛擬機的資源。這部分我們也暫時不進行更動。
第67行到第70行,可以寫一些簡單的Script去做一些系統更新、安裝等動作,將註解拿掉,改為圖五代碼,並執行Vagrant provision將重新執行設定檔,會自動進行update及安裝apache2。
若是未來有更多的步驟需進行,Vagrant也可以增加如Puppet、Chef、Ansible等工具來簡化管理。
圖五 Vagrantfile設定檔
經過上述步驟,待執行完畢。我們再輸入vagrant ssh可以登入剛剛所建立的虛擬機環境,Vagrant會幫我們建立預設一組帳號,用使用者名稱Vagrant的帳號登入,如圖五。
圖六 使用vagrant ssh登入
也可以利用Host本機的瀏覽器輸入網址http://localhost:8080/,成功帶我們到剛所建立的Apache預設頁面。
圖七 Apache2預設頁面
若是要回到原本Host的控制,只要輸入exit就回到原先Host的控制。
圖八 離開虛擬機
虛擬機部署的階段就告一段落了,以下再提供一些常用的Vagrant指令供使用。在操作的同時,也可以開啟Virtual Box圖形化介面觀看操作的變化。
Vagrant基本指令
vagrant init / 初始化
vagrant up / 啟動
vagrant halt / 關機
vagrant destroy / 刪除
vagrant status / 查看虛擬機的狀態(關機、開機)
vagrant ssh-config / 查看基本登入資訊
圖九 使用指令將虛擬機關閉
總結
透過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/