Vagrant 是一個可創(chuàng)建輕量級、高復用性和便于移植的開發(fā)環(huán)境的工具樟遣。
此文章是作者折騰vagrant的筆記茧妒, 希望大家看后酬蹋,不再去網上搜羅資料及老, 能順利搭建vagrant環(huán)境。vagrant更新較快除嘹, 還建議大家以官網為主写半。Vagrant官網
面臨的問題
- 開發(fā)人員設備不統(tǒng)一, win , Mac , Linux等
- 開發(fā)環(huán)境不統(tǒng)一尉咕, 各種軟件安裝叠蝇、版本和依賴管理困難
- 沒有專業(yè)的人員來進行系統(tǒng)管理
- 換了設備還要折騰新的開發(fā)環(huán)境
如果你希望本地開發(fā), 同時擁有統(tǒng)一的開發(fā)環(huán)境年缎, Vagrant 可以幫你搞定悔捶。
實戰(zhàn):Windows下,使用Vagrant部署Linux 開發(fā)環(huán)境
安裝VirtualBox
下載 Vagrant
-
下載安裝Windows版
window版是msi安裝文件单芜,直接界面安裝即可蜕该。
如果下載centos版本,是rmp包
rpm -ivh vagrant_1.8.1_x86_64.rpm
安裝 Vagrant
mkdir vagrant_getting_started
cd vagrant_getting_started
vagrant init
執(zhí)行init命令后洲鸠, 會在當前目錄生成一個配置文件 Vagrantfile
添加Vagrantbox
vagrant box add hashicorp/precise64
vagrant up
其中 hashicorp/precise64
是在(https://atlas.hashicorp.com/boxes/search)這里定義的堂淡, 會直接從網絡下載鏡像馋缅。
鑒于下載速度極慢,Vagrantbox還可以支持下載好直接本地add.
- Vagrantbox資源及下載到本地
- 安裝操作系統(tǒng)鏡像绢淀, 例如我們下載一個centos鏡像
[CentOS 6.5 x86_64](https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box]
從本地添加vbox
mkdir vagrant_getting_started
mkdir vagrant_vbox #centos65-x86_64-20140116.box 下載到此目錄
cd vagrant_getting_started
vagrant box add centos65 vagrant_vbox/centos65-x86_64-20140116.box
vagrant up
其中centos65
是我們自定義的vbox鏡像命名萤悴,vagrant_vbox/centos65-x86_64-20140116.box
是vbox下載鏡像的本地路徑。
查看已經添加的box列表
vagrant box list
centos65 (virtualbox, 0)
說明添加成功皆的。
接下來可以配置Vagrantfile
Vagrant.configure(2) do |config|
#box add 的名字
config.vm.box = "centos65"
#Vagrant的三種網絡配置
#端口映射(Forwarded port) 把宿主計算機的端口映射到虛擬機的某一個端口上覆履,訪問宿主計算機端口時,請求實際是被轉發(fā)到虛擬機上指定端口的费薄。
#例如下面的配置硝全,將訪問宿主計算機8080端口的請求都轉發(fā)到虛擬機的80端口上進行處理 #訪問localhost:8080,對應訪問虛擬機的80端口
#優(yōu)點:容易實現外網訪問虛擬機
#缺點:端口比較多時,配置麻煩楞抡;不支持在宿主機器上使用小于1024的端口來轉發(fā)伟众。比如:不能使用SSL的443端口來進行https連接。
config.vm.network "forwarded_port", guest: 80, host: 8080
#私有網絡(Private network) 拌倍,只有主機可以訪問虛擬機赂鲤,如果多個虛擬機設定在同一個網段也可以互相訪問,當然虛擬機是可以訪問外部網絡的柱恤。
#優(yōu)點:安全,只有自己能訪問
#缺點:因為私有的原因找爱,所以團隊成員其他人不能和你協作
config.vm.network "private_network", ip: "192.168.33.10"
#公有網絡(Public network) 梗顺,虛擬機享受實體機器一樣的待遇,一樣的網絡配置车摄,vagrant1.3版本之后也可以設定靜態(tài)IP寺谤。
#優(yōu)點:方便團隊協作,別人可以訪問你的虛擬機
#缺點:需要有網絡吮播,有路由器分配IP
config.vm.network "public_network", ip: "192.168.12.253"
#設置文件同步变屁,如下 ../www_data 是本地目錄, /vagrant_data是虛擬機文件目錄
#兩個目錄設置為同步意狠,這樣就可以直接本地編輯文件粟关,使用虛擬機配置的軟件環(huán)境了。
config.vm.synced_folder "../www_data", "/vagrant_data"
啟動虛擬機
vagrant up
配置ssh 登錄
vagrant ssh
執(zhí)行此命令后环戈,vagrant會生成ssh配置闷板,
hostname: localhost
port: 2222
Connection Type: SSH
User Name: vagrant
Password: vagrant
使用ssh 工具 , 如 xshell
即可登錄虛擬機
另外院塞,登錄到虛擬機如果想使用root遮晚,可以配置root密碼
sudo passwd root
打包分發(fā)
當你配置好開發(fā)環(huán)境后,退出并關閉虛擬機拦止。在終端里對開發(fā)環(huán)境進行打包
vagrant package
打包完成后會在當前目錄生成一個 package.box
的文件县遣,將這個文件傳給其他用戶糜颠,其他用戶只要添加這個 box 并用其初始化自己的開發(fā)目錄就能得到一個一模一樣的開發(fā)環(huán)境了。
也可以把配置文件打包進box
vagrant package --vagrantfile Vagrantfile
Vagrant 常用命令
Vagrant的命令很多.官網上有 完整的列表, 這里會介紹一些常用的.
vagrant up
vagrant up這會運行基于 Vagrantfile配置文件的vagrant. 我用來啟動和重啟開發(fā)環(huán)境.
vagrant suspend
vagrant suspend 這個能暫停當前環(huán)境操作. 最好在關機前做好這一步萧求,以防下次開機配置無法恢復.
Starting, Pausing, and Resuming: 啟動和重啟可以直接使用vagrant up. 所有之前的狀態(tài)都會被保存起來.
vagrant destroy
vagrant destroy永久性的移除你的虛擬環(huán)境.
vagrant reload
vagrant reload 和vagrant reload --provision如果環(huán)境掛了括蝠,可以重啟.如果加了--provision, 就會恢復資料庫. 這在使用Cookbooks 或Puppet移除或添加東西時很有效果.
vagrant ssh
vagrant ssh所有公共文件夾中的操作都會同步到虛擬環(huán)境,但如果需要直接操作可使用該命令.
vagrant ssh-config
vagrant ssh-config這個顯示連接到虛擬環(huán)境的所有配置項信息.