Vagrant可以想象成一個(gè)VM的倉庫工具棋傍,我們可以使用別人做好的VM救拉,或者我們可以自己做一個(gè)VM瘫拣,配置好一些安裝包。設(shè)置好統(tǒng)一環(huán)境派昧。減少開發(fā)和測試環(huán)境導(dǎo)致的bug拢切。
- 首先給出下載地址
Vagrant: https://www.vagrantup.com/downloads.html
VirtualBox: https://www.virtualbox.org/wiki/Downloads
本文環(huán)境為Mac蒂萎,所以安裝只需要雙擊.pkg+next完成安裝 - 初始化vagrant項(xiàng)目
首先我們需要生成VagrantFile淮椰,作為vagrant的配置文件。這個(gè)文件夾可以是空的泻拦,也可以是一個(gè)已經(jīng)存在的vagrant工程$ mkdir vagrant_getting_started $ cd vagrant_getting_started $ vagrant init
- 添加box
可以通過如下命令進(jìn)行添加
Note: 這種方式是從官方的倉庫進(jìn)行下載的忽媒。我們也可以指定本地文件或者自已的一個(gè) url下面會有介紹争拐。box加載是全局性的晦雨,這就是說,如果你有兩個(gè)project用了同一個(gè)遠(yuǎn)程倉庫中的鏡像音瓷,兩兩之間是不會有影響的夹抗。vagrant box add hashicorp/precise64
在VagrantFile中配置上我們剛剛加入的box:
Note: 如果這個(gè)box沒有通過上面的命令進(jìn)行添加,則在運(yùn)行這個(gè)項(xiàng)目的時(shí)候會被進(jìn)行下載Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" end
你可以類似下面指定鏡像的使用版本:
直接指定box的位置:Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.box_version = "1.1.0" end
我們可以在這里搜索別人上傳的鏡像:vagrant repositoryVagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" end
- 啟動box
$ vagrant up
進(jìn)行啟動
$ vagrant ssh
通過ssh進(jìn)行虛擬機(jī)的連接
$ vagrant destroy
銷毀該虛擬機(jī)漠烧。這個(gè)操作并不會在本地刪除之前下載的box file,只是銷毀當(dāng)前的虛擬機(jī)已脓,如果要刪除之前那個(gè)box文件,需要執(zhí)行vagrant box remove
- 共享文件夾
vagrant會自動掛載當(dāng)前文件夾至虛擬機(jī)的/vagrant目錄下厕宗,所以在對虛擬機(jī)的/vagrant目錄進(jìn)行操作是也會影響到宿主機(jī)的文件 ,列如:vagrant@precise64:~$ touch /vagrant/foo vagrant@precise64:~$ exit $ ls foo Vagrantfile
- 設(shè)置啟動腳本
- 在當(dāng)前文件夾下新建
bootstrap.sh
文件#!/usr/bin/env bash apt-get update apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant /var/www fi
- 配置VagrantFile文件
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.provision :shell, path: "bootstrap.sh" end
- 使配置生效
vagrant up
即啟動虛擬機(jī)時(shí)會生效,如果虛擬機(jī)已經(jīng)在運(yùn)行可以通過以下命令進(jìn)行加載vagrant reload --provision
- 在當(dāng)前文件夾下新建
未完待續(xù)~~~~