Vagrant提供了可配置、可複用的虛擬開發和部署環境,對於開發人員來說,Vagrant可以幫你統一團隊成員的開發環境。也可以提供一套一致的線上線下環境。vagrant 在mac上通過命令行工具可以管理統一的鏡像(BOX)所以vagrant還需要依賴VirtualBox等提供系統(支持linux,windows,OS X等)環境。這篇文章主要介紹下個人在mac上的配置過程。後面一篇會介紹vagrant上搭建docker(一種輕量級的LinuxContainer),讓docker更加輕量級得管理我們統一的虛擬環境。
一、搭建vagrant
1、下載
vagrant官網https://www.vagrantup.com/ download 一路安裝下去。裝好之後需要安裝VirtualBox。也是一路下一步安裝。VirtualBox 裝好之後就可以啓動虛擬環境了。然後我們就可以用vagrant 來管理虛擬環境。
2、初始化vagrant 環境
創建一個vagrant管理目錄,來存放和管理所有的虛擬環境。創建一個運行vagrant init 命令來初始化環境。這時候會生成一個Vagrantfile。過程如下:
3、創建鏡像(box)
只通過上述步驟,然後用vagrant up命令會提示如下情況:
沒錯,虛擬環境需要box。這裏的box是虛擬機的一個鏡像。當然,如果通過VirtualBox 工具就可以爲我們快速創建一個鏡像,也就是.box 結尾的文件。我們可以通過圖形界面來創建一個鏡像,如下圖:
然後選擇自己的配置,內存,內核,硬盤分配等。然後就可以直接啓動這個虛擬環境了。這個鏡像創建在VirtualBox 默認的目錄下面。
~/VirtualBox VMs/linnux1$ vagrant init
再用vagrant init 命令就可以創建一個新的虛擬化環境,以及描述文件:Vagrantfile了,這個文件就會聲明一個初始化的虛擬環境。
當然,也可以用命令來從遠程倉庫(http://cloud-images.ubuntu.com/vagrant/)下載一個鏡像。命令如下:
$vagrant box add Ubuntu-15-10 http://cloud-images.ubuntu.com/vagrant/wily/current/wily-server-cloudimg-amd64-vagrant-disk1.box
剩下的就是等待ubuntu的鏡像下載完成。我們還可以用box list 命令來查看已經擁有的box
box 添加到環境之後,然後我們就可以通過vagrant init precise64 命令來初始化一個vagrant 環境。然後再用vagrant up 命令啓動虛擬機。然後會看到如下效果:
環境啓動起來了,在vpro工程目錄,還會存在一個隱藏的 .vagrant目錄。這個目錄下面會有本次啓動的box的信息,包括一個本次環境的指定VM IDs。如果啓動遇到了:Your VM has become “inaccessible." 異常。直接刪除這個隱藏目錄就可以。再次用vagrant up命令,就會重新rebuild一個.vagrant 目錄以及正確的ID信息。啓動成功後接着就可以用vagrant ssh 命令來登錄到虛擬環境中。如下:
虛擬環境的目錄會保留一份host路徑的共享目錄。接着就可以和虛擬機一起快樂的玩耍了。
4、保存鏡像
爲了下一次可以更快速得登錄虛擬環境。這裏先exit 。然後用vagrant package 命令來在我們當前的vagrant項目目錄下打包box。打包好就可以在當前目錄下看到一個package.box。下一次就可以快速用這個打包好的box來啓動我們搭建好的一套虛擬環境了。這份box還可以共享。這樣大家都可以用工一份統一的部署環境了。搭建環境不容易,且搭且保存。
然後就可以將這個box添加到我們的box 列表中了。下次可以直接init 這個box。
5、vagrant基本配置
vagrant的配置信息都在Vagrantfile 中。也就是剛纔我們使用init命令後產生的文件。我們可以用vim編輯配置項。粗略看一眼,有很多的說明。。。 下面截出一部分。
config.vm.box = “ubunto-ok”
這裏設定我們剛纔打包好的box作爲默認的初始化鏡像。這樣以後vagrant init 命令就可以直接啓動默認的虛擬環境。
config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
這裏可以設置我們是否使用圖形化界面、虛擬memory的初始化值。這裏依據自己的情況來設置就可以。
config.vm.host_name = "lijingyao"
config.vm.network "forwarded_port", guest: 80, host: 8080
上面這兩行設置了hostname和forword 的端口。通過這個端口設置就可以進行VM的80端口和host的localhost:8080通信了。
6、vagrant 網絡配置
配置成private_network 。也就是自己才能看到。先自嗨,不共享環境。如果要VM之間可以通信,就需要設置成public_network
config.vm.network :private_network,ip: "192.168.33.10"
然後就可以用vagrant reload 讓我們的配置生效了(每次修改Vagrantfile 都需要reload配置纔可以生效)。 下次我們可以直接再vagrant項目目錄用vagrant up命令就可以啓動我們默認配置已經包裝好的box了。
7、常用命令
vagrant up 啓動
vagrant halt 停止
vagrant suspend 暫停本地環境
vagrant resume 恢復本地環境
vagrant destroy 徹底移除本地環境
vagrant ssh 登陸虛擬環境