Vagrant是一個基於 Ruby 的工具,用於創建和部署虛擬化開發環境。它使用 Oracle 的開源VirtualBox虛擬化系統。
Vagrant 在快速搭建開發環境方面是很贊的,試想一個團隊中,大家開發同一個東西,以前每個人都要自己搭建一套開發環境 ,有了 Vagrant,你只需要搭建一份,然後分發給所有團隊成員,這樣大家都立刻就有完全相同的開發環境了,即便有成員在Windows 下,也可以方便的使用 Linux 環境開發。如果團隊中來了新人,也不需要手把手教他怎麼搭建開發環境,給他丟一個Box 就好了,只要他掌握了 Vagrant 的使用方法,立刻就可以融入到開發中來,而不需要費心去安裝復雜的環境。
Vagrant 的跨平台的特性簡直是太棒了,這都要利益於 VirtualBox 這樣一款優秀的軟件和 Vagrant 這些天才工程師們。
Vagrant 還支持使用Chef和Puppet來維護你的虛擬開發環境,不過因為我對這兩個工具並不熟悉,本文中不作介紹,只簡單 介紹如果在 Windows 下配置一個 Vagrant 環境。
從 Vagrant 官網下載最新的 Vagrant 和對應的 VirtualBox 安裝後,新建一個文件夾用來配置 Vagrant
因為使用vagrant init precise32 http://files.vagrantup.com/precise32.box命令下載 box 會比較慢, 所以最好是提前使用迅雷等工具下載好 box 放在一個文件中,然後初始化時使用本地路徑,會快很多。
vagrant init precise32 ..\boxes\precise32.box
需要注意的是,這裡使用本地路徑時,需要使用 Windows 風格的路徑,即用\來作為路徑分隔符。
PS:可用的 Vagrant Boxes 見這裡:http://www.vagrantbox.es/
Vagrant 中配置端口轉發非常方便
Vagrant.configure("2") do |config| # other config here config.vm.network :forwarded_port, guest: 80, host: 8080 end
上面的配置會將 Vagrant 中的 80 端口和你本機的 8080 端口建立轉發關系,這樣你在本機訪問 http://localhost:8080 就相當於訪問 Vagrant 中的 http://localhost:80 了。
端口轉發可以配置多組。
使用 Vagrant 有一個非常重要的一步就是共享文件夾(得益於強大的 VirtualBox)
在Vagrantfile中設置
config.vm.synced_folder "E:/Blog", "/home/vagrant/Blog"
其中第一個參數E:/Blog為本機上需要共享的文件夾路徑,第二個參數為 Vagrant 虛擬機中的映射路徑,注意第二個參數需要 使用絕對路徑,如/home/vagrant/Blog
配置好後,就可以啟動虛擬機並連接到 Vagrant 了。
首先,執行vagrant up,等待片刻,vagrant 就啟動好了。 ::
e:\Vagrant\precise32>vagrant reload [default] Attempting graceful shutdown of VM... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] -- 5000 => 5000 (adapter 1) [default] -- 3000 => 3000 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Configuring and enabling network interfaces... [default] Mounting shared folders... [default] -- /vagrant [default] -- /home/vagrant/Blog [default] -- /home/vagrant/Notes [default] -- /home/vagrant/Projects
如果你vagrant up後又修改了 Vagrantfile,要使之生效,需要執行vagrant reload
在 Windows 下,不能使用vagrant ssh來直接訪問 vagrnat,不過該命令會告訴你如何通過 ssh 連接 vagrant ::
e:\Vagrant\precise32>vagrant ssh `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use the PuTTY SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2222 Username: vagrant Private key: C:/Documents and Settings/greatghoul/.vagrant.d/insecure_private_key
這樣你就可以使用類似 putty 的 ssh 客戶端來訪問 vagrant 來進行開發了,這裡極力推薦 Chrome 擴展Secure Shell。
Vagrant 的詳細介紹:請點這裡
Vagrant 的下載地址:請點這裡
如何使用vagrant在虛擬機安裝Hadoop集群 http://www.linuxidc.com/Linux/2013-04/82750.htm
Vagrant 中高效的 Puppet 模塊管理 http://www.linuxidc.com/Linux/2014-05/101873.htm
使用 Vagrant 和 Fabric 用於集成測試 http://www.linuxidc.com/Linux/2014-07/104113.htm
使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm