Vagrant Tutorial(2)跟著流浪漢把玩虛擬機
Vagrant Tutorial(1)雲端研發人員,你也需要虛擬機! << 前情 前情提要研發者用的本機電腦,與真正上線服務的電腦,兩者的作業系統及相關組態,甚至連本性都很不一樣。研發者需要一種方法,能在本機模擬出那些電腦叢集,越像越好。 虛擬機技術,就是一帖解藥。不只是上線環境的伺服器需要,不只是伺服器維運人員需要;就連研發者手邊的開發機,也需要。 虛擬機是什麼?虛擬機軟體,讓你將任何一台電腦模擬出另外 N 台電腦;這些被模擬出來的虛擬機 (virtual machine),某種程度上相當於一部完整電腦,有自己的 CPU、記憶體、磁碟和 I/O 裝置,又可以像真實裸機 (bare metal machine) 一樣,灌任何一種開機用的作業系統進去。灌好之後,在虛擬機軟體裡面把它「開機」起來,並將視窗放大到全螢幕,拿給不知情的第三者看,他可能根本不知道這是虛擬機呢。 因此,藉由免費且開源的 VirtualBox,你可以在 Windows 上,跑一個 Linux 虛擬機來玩玩;也可以在 Mac 上,跑一個 Windows 虛擬機應付一些被 Internet Explorer 綁定的骨灰級網頁。像下圖就是我在 Mac 上,透過 VirtualBox 同時啟動兩個虛擬機,一個 Ubuntu Linux 14.04,一個 Windows 7:
如果你不滿意 VirtualBox 的性能,還可以購買 VMware Workstation、VMware Fusion、Parallels Desktop 等更強悍的虛擬機軟體。 如上圖所示範的,只要實體機夠力:CPU 夠快,記憶體夠大,同一時間可以開啟多台異質虛擬機。如果你會設定的話,這些虛擬機之間,亦可透過網路模擬層彼此互連。因此,虛擬機是分散式系統研發者的好幫手,讓你只用一台實體機(當然啦,前提是,實體機與 hypervisor 的性能不能太差),就能在某種程度上模擬出多台互連的異質電腦叢集。 為了行文方便,以下我稱本機電腦用以開機的作業系統為 host OS,虛擬機所跑的則稱為 guest OS。 虛擬機的 Wish List主流的虛擬機軟體,都提供易於上手的 GUI 介面。可是,對軟體研發者來說,更需要的是可程式化的介面,以便將虛擬機納入軟體開發工具鏈中。譬如:
雖然就連免費且開源的 VirtualBox 都有提供 歡迎流浪漢 Vagrant 的加入!根據韋氏字典,“vagrant” 這個英文字的本意是:
而從 Vagrant 擺在 GitHub 的歷史紀錄來看,Mitchell Hashimoto 於 2010 年 3 月 8 日首次釋出 Vagrant 0.1.0 版,當時它的 slogan 是:
關鍵字:
或許作者想讓這個工具的使用者,能像流浪漢、游民一樣,浪跡天涯,隨遇而安;不受限於機器的實體位置,能在任何一台電腦上,模擬出任何一種遠端主機的可程式化環境,讓研發人員的日子更好過。 當時它是這麼描述自己的:
關鍵字:
最初 Vagrant 是站在 VirtualBox 的基礎上,用 Ruby 加工,寫的一套可程式化介面。四年半下來,Vagrant 已有明顯改進,以下只提兩則與安裝 Vagrant 有關的部分,畢竟,軟體再怎麼好,也要先降低安裝門檻,才利於推廣:
所以今天,你只要去 Vagrant 官網的下載頁,直接下載 dmg、msi、deb、rpm 這些標準的安裝檔,就能無痛安裝。 安裝步驟為了順利進行本系列文章的操作,請先依照以下步驟安裝 Vagrant 及 VirtualBox:
以下文章皆以 Vagrant 1.6.0 以上版本為準(我用的是 1.6.3),如果你曾經安裝過舊版本,請先升級。 作業系統注意事項如果你是 Ubuntu 用戶,可以在 Software Center 下載更量身打造的 VirtualBox。 如果你是 Mac OS X 用戶,想用 Homebrew Cask 機制安裝 VirtualBox + Vagrant 的話: $ brew cask install vagrant --appdir=/Applications $ brew cask install virtualbox --appdir=/Applications 如果你是 Windows 用戶,嗯,在 Windows 上,命令列是次等公民,得多花一點心思排除問題。辛苦你了⋯⋯ 在 Windows 上安裝 VirtualBox 時,如果遇到以下錯誤: 請先切換到放置下載檔案的目錄,找出剛剛下載回來的安裝檔名(以我的例子: $ VirtualBox-4.3.14-95030-Win -extract $ cd VirtualBox $ dir 你應該會看到一個 最後,為了運作順暢,你還需要一個「純命令列的 ssh 程式」。如果你堅持要用 PuTTY、PieTTY 或可攜版,可能會在某些進階步驟踩到地雷,請不要自找麻煩,乖乖安裝一個「純命令列的 ssh 程式」吧。以下是一些輕量級的
安裝後,記得要去【控制台】把 生出一個虛擬機,只要兩道指令!以下快速示範一些簡單步驟,讓你體會一下,只要兩道指令,就能生出一個虛擬機! 首先,請先選定一個工作目錄,供 Vagrant 運作時寫入相關資料之用。假設我們選定的目錄名稱為 $ mkdir demo-1 $ cd demo-1 接著,請選定你想要安裝哪一個 guest OS。 Vagrant 發明人創辦的 HashiCorp 公司,經營一個 Vagrant Cloud 服務,作為 Vagrant 虛擬機(在 Vagrant 術語裡稱為 box)的 repository 中央儲存庫。你可以去搜尋屬意的 box 來安裝: 或是試試以下幾個我常用的 box:
這次我們就以 $ vagrant init ubuntu/trusty64 $ vagrant up 有兩種可能的情況:
兩者的差別,請見我做的實況錄影,全長約 9 分鐘: http://asciinema.org/a/11428 。 OK,就這麼兩道指令,你已經在本機生出一台虛擬機了! 你可以 ssh 進去這台虛擬機,就像你以前 ssh 進去遠端主機一樣: $ vagrant ssh vagrant$ 注意到了沒?系統提示符號改變了,提醒你你已經從 host OS 踏入 Vagrant 所管理的 guest OS 了。 你可以看看這個 guest OS 是否真的為 Ubuntu 14.04 LTS (Trusty Tahr) 64-bit: vagrant$ lsb_release -a 玩累了,你可以先登出,回到 host OS: vagrant$ exit $ 只要位於同一個工作目錄,你隨時可以再 ssh 登入: $ vagrant ssh 登出後,可以暫時將虛擬機關機,將 CPU 及記憶體等資源歸還給 host OS 主機: $ vagrant halt 小結VirtualBox、VMware Workstation、VMware Fusion、Parallels Desktop 等虛擬機軟體,讓你將任何一台電腦模擬成其他作業系統;Vagrant 則進一步將這些虛擬機納入管控,讓軟體研發流程更順暢、更有彈性。 「Vagrant + VirtualBox 組合技」的成功,啓迪了許多人,原來虛擬機也可以這麼玩!像 boot2docker 就師法這種方式,用「boot2docker + VirtualBox 組合技」讓非 Linux 的電腦上也能跑 Docker,更衍生出 yungsang/boot2docker、parallels/boot2docker 這些 Vagrant + Docker + VirtualBox/Parallels Desktop 大混血的玩法⋯⋯呃,等我開 Docker Tutorial 專欄時,再慢慢談好了。 OK,今天 Vagrant 課程就先上到這裡。下回會再仔細解釋前面那些指令背後到底做了什麼。 |
alexk1107
12/04
受益良多非常感謝你,我多試了 CentOS/7 也OK
請問 Window 10 是相同做法嗎?