2021-05-12 14:32:11
Vagrant使用簡明教學
Vagrant是什麼,不是什麼。
Vagrant是構建在虛擬化技術之上的虛擬機器執行環境管理工具。通過Vagrant可以方便實現的對虛擬機器的管理,包括建立和刪除虛擬機器、設定虛擬機器執行引數、管理虛擬機器執行狀態、自動化設定和安裝開發環境必須的各類軟體、打包和分發虛擬機器執行環境等。
Vagrant的執行,需要依賴某項具體的虛擬化技術。由於VirtualBox是一項開源的虛擬化軟體,可以同時在Windows、Linux、Macintosh、SSolaris等作業系統上執行並支援眾多對眾多作業系統的虛擬化,因此,在Vagrant開發的初期,唯一支援的是VirtualBox。隨著虛擬化技術的快速發展,現在已經有了更多的虛擬化技術可供選擇。VMware、HyperV、Docker等都已經可以通過Vagrant的管理而工作。Windows的HyperV技術在部分Windows發行版本中的整合,使得Vagrant在“開盒即用”的特性方面前進了一大步。
因此,Vagrant是虛擬機器管理工具,不是某項具體的虛擬化技術。對於各項虛擬化技術而言,Vagrant提供了一套基於組態檔和命令列的管理工具。也正是因為如此,Vagrant完成了對虛擬化技術在一定程度上的封裝。這為將虛擬化技術引入到基於桌面執行環境的開發工作流中創造了便利條件。
為什麼要使用Vagrant
盡可能避免”Work on my machine“錯誤
在Vagrant沒有出現之前,在伺服器端進行開發的人們通常都擁有一個專用的開發帳號。使用這個帳號,開發者可以在一定限度內設定自己的開發環境、完成編碼、進行測試並完成向開發團隊程式碼庫的程式碼推播。於是,在團隊合作開發的過程中,一個問題出現了:當A進行了一次新的程式碼推播之後,原本可以通過的程式碼持續整合測試無法通過了。通過程式碼檢查,發現A的程式碼出現了異常。而A在自己的開發環境中的測試是可以通過的。這類錯誤被Vagrant稱作為“Work on my machine”錯誤。這類錯誤要定位解決通常耗時很久。在一個可以進行面對面開發的團隊中,問題的定位由於溝通手段的豐富相對較快。如果是分散在不同地方的人在合作開發,那麼要解決此類錯誤,就沒有那麼簡單了。
小張在自己的機器上辛苦的完成了一項功能開發,通過了本機上的各項測試,高高興興的向團隊程式碼庫提交的自己的工作成果。心想終於可以放鬆一下了。“是不是可以買一隻機械鍵盤犒勞一下?晚上和夥伴們出去聚會吧!嘿嘿。”小A心裡美滋滋的想。
“小張,你來一下,程式碼有問題”。臨近下班的時候,小A接到QA小組的一個電話。“怎麼回事?”小張一頭霧水的走進了QA小組的辦公區。
“你今天下午提交的程式碼,無法通過測試。你自己做了測試了嗎?”,老王是QA小組測試負責人,他面色凝重的問小張,“咱們就要發布一個新的程式碼版本了。這個時候你的程式碼出問題,可能會影響程式碼發布的。要不你趕緊看看?明天上午能修復嗎。我們的測試報告和測試規範在這裡”。
“明明沒有問題的呀”,出了QA的辦公區,小張仍然迷惑不解。“在我的機器上明明是可以執行的。而且為了晚上的聚會,測試規範中定義的各項測試也是提前跑過的呀。看來今天晚上的聚會要取消了。“小張無奈的拿出電話,打算給好友們打電話,通知自己無法參加晚上的聚會了。
好吧,借助Vagrant,每一個開發者都可以得到一份伺服器執行環境的虛擬機器,可以以虛擬機器的方式執行一個微型的”生產環境“。這樣,在提交程式碼之前,開發這就可以在虛擬機器上完成”生產環境“的驗證。自然可以解決上面的問題了。
如何使用vagrant在虛擬機器安裝Hadoop叢集 http://www.linuxidc.com/Linux/2013-04/82750.htm
Vagrant 中高效的 Puppet 模組管理 http://www.linuxidc.com/Linux/2014-05/101873.htm
利用Vagrant搭建多平台環境 http://www.linuxidc.com/Linux/2015-09/123518.htm
使用 Vagrant 和 Fabric 用於整合測試 http://www.linuxidc.com/Linux/2014-07/104113.htm
使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm
Windows 下設定 Vagrant 環境 http://www.linuxidc.com/Linux/2014-07/104115.htm
使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm
通過 Vagrant 搭建虛擬機器環境 http://www.linuxidc.com/Linux/2015-08/121985.htm
使用Vagrant和Virtualbox建立虛擬機器 http://www.linuxidc.com/Linux/2016-08/134435.htm
Ubuntu下使用Vagrant搭建虛擬開發環境 http://www.linuxidc.com/Linux/2016-12/138113.htm
縮短搭建開發環境的時間
搭建一個開發環境,需要完成作業系統的安裝,必要的開發支撐軟體的安裝,設定作業系統和程式碼執行環境。如果所有的操作都需要由人來手動操作的話,一個下午的時間是必要的。搭建開發環境是團隊中新人加入時的必不可少的第一課。而團隊的老人們,無可避免的會接到無數的“新手”的發問。更不用說,當著名的Wxdows系統需要重新安裝系統的時候,無論誰,基本上一天的工作時間算是交代了,更不用說各類開發軟體的設定如果會影響程式碼執行結果的時候會引入什麼樣的“災難”了。使用Vagrant實現開發環境的快速搭建成為提升效率的顯著功能特性之一。
Vagrant提供了統一的安裝程式設定環境:
- 使用統一的組態檔(
vagrantfile
)實現對伺服器的統一設定。 - 使用共用資料夾(
shared folder
)實現程式碼編輯向“伺服器”的快速提交 - 使用軟體設定指令碼(
Provisioning scripts
)實現伺服器上的執行環境的快速建立 - 擁有標準化的虛擬機器分享網路,極大緩解了分享開發環境設定時的網路頻寬壓力
- 可以具備一個供安裝維護測試使用的可拋棄的伺服器端環境。
小李是進入開發團隊的新人。從學校畢業出來,小李就到了一個公司從事伺服器端的軟體開發工作。由於興趣愛好的原因,他新近加入了這個網遊開發團隊。他接到的第一個命令就是“搭建一個伺服器工作紀錄檔分析系統,為伺服器程式碼優化改進做準備”。
小李從團隊專案經理那裡得到了伺服器環境安裝手冊以及伺服器紀錄檔資料庫設計文件。小李需要在自己的機器上用虛擬機器安裝一套伺服器環境,用以進行紀錄檔資料的分析和提取。
“好吧,估計這幾天的時間要搭到系統安裝裡去了。”小李做好了心理準備,開啟了伺服器環境安裝手冊。意外的,手冊很簡單:
- 安裝Vagrant和VirtualBox,從檔案伺服器(地址XX.XX.XX.XX/Software)下載Vagrant、VirtualBox安裝檔案,並完成安裝
- 執行
git clone git@xx.xx.xx.xx:vagrantconfig.git
獲取vagrant組態檔- 進入vagrantconfig目錄,執行
Vagrant up ftp://xx.xx.xx.xx/vagrant/trusty-server-cloudimg-amd64-vagrant-disk1
- 執行
vagrant ssh
驗證安裝- 從檔案伺服器(xx.xx.xx.xx/data)下載紀錄檔資料庫dump檔案,完成Mysql資料庫內容的載入
- ……
“這就完了?”半個小時後,小李目瞪口呆的看著自己機器上執行的虛擬機器,一套伺服器紀錄檔系統已經載入完成了。小李已經可以著手進行資料的分析並開始做具體編碼設計了。
小結
如果還在為“Work on my machine”錯誤頭疼,如果安裝開發環境還是團隊心頭的痛,那為什麼不試試用用Vagrant呢?
Vagrant的主要使用者
對於需要在伺服器端進行開發的人,Vagrant管理的虛擬機器映象提供了統一的生產執行環境。開發者可以隨心所欲的決定什麼時候想“伺服器”端發布程式,什麼時候在“伺服器”端進行必要的測試,而絲毫不用擔心會影響生產環境伺服器的穩定執行。
對於各類設計人員,使用Vagrant,可以讓設計人員可以隨心所欲的選擇自己的開發用作業系統、設計軟體、編輯IDE軟體,可以通過與虛擬機器之間的共用目錄,快速實現設計檔案在生產環境中的測試驗證。
對於系統維護人員,使用Vagrant,可以隨意進行對系統安裝設定的過程進行演練,驗證工程安裝手冊的完備程度。也可以對系統維護中的各項操作指令隨意進行實驗。這對於提升售後服務團隊的問題快速解決能力,獲得實戰經驗的非常重要的手段。
Vagrant對開源開發的貢獻
開源的開發者常常無法像一個普通團隊那樣面對面的坐在一起進行開發工作。由於開發團隊是一種鬆散的組織模式,因此,也不是每一個開發者都可以獲得在伺服器端上的開發授權。此時Vagrant就提供給這些開發者必要的程式碼執行環境,極大程度的提升了開源開發者向開發中心小組提交程式碼的品質。此外,Vagrant的虛擬機器分享模式,也使得開源開發者獲得統一的伺服器執行環境的成本變得異乎尋常的低廉。
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2016-12/138932p2.htm
相關文章