Vagrant可以想象成一个VM的仓库工具,我们可以使用别人做好的VM,或者我们可以自己做一个VM,配置好一些安装包。设置好统一环境。减少开发和测试环境导致的bug。
- 首先给出下载地址
Vagrant: https://www.vagrantup.com/downloads.html
VirtualBox: https://www.virtualbox.org/wiki/Downloads
本文环境为Mac,所以安装只需要双击.pkg+next完成安装 - 初始化vagrant项目
首先我们需要生成VagrantFile,作为vagrant的配置文件。这个文件夹可以是空的,也可以是一个已经存在的vagrant工程$ mkdir vagrant_getting_started $ cd vagrant_getting_started $ vagrant init
- 添加box
可以通过如下命令进行添加
Note: 这种方式是从官方的仓库进行下载的。我们也可以指定本地文件或者自已的一个 url下面会有介绍。box加载是全局性的,这就是说,如果你有两个project用了同一个远程仓库中的镜像,两两之间是不会有影响的。vagrant box add hashicorp/precise64
在VagrantFile中配置上我们刚刚加入的box:
Note: 如果这个box没有通过上面的命令进行添加,则在运行这个项目的时候会被进行下载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
进行启动
$ vagrant ssh
通过ssh进行虚拟机的连接
$ vagrant destroy
销毁该虚拟机。这个操作并不会在本地删除之前下载的box file,只是销毁当前的虚拟机,如果要删除之前那个box文件,需要执行vagrant box remove
- 共享文件夹
vagrant会自动挂载当前文件夹至虚拟机的/vagrant目录下,所以在对虚拟机的/vagrant目录进行操作是也会影响到宿主机的文件 ,列如:vagrant@precise64:~$ touch /vagrant/foo vagrant@precise64:~$ exit $ ls foo Vagrantfile
- 设置启动脚本
- 在当前文件夹下新建
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
即启动虚拟机时会生效,如果虚拟机已经在运行可以通过以下命令进行加载vagrant reload --provision
- 在当前文件夹下新建
未完待续~~~~