歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Vagrant使用簡明教程

Vagrant使用簡明教程

日期:2017/2/28 13:45:19   编辑:Linux教程

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 [email protected]: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的虛擬機分享模式,也使得開源開發者獲得統一的服務器運行環境的成本變得異乎尋常的低廉。

Copyright © Linux教程網 All Rights Reserved