Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。这篇文章主要是讲解vagrant的使用。本文参考自vagrant官方文档
安装vagrantvagrant官网 : http://www.vagrantup.com
下载virtualbox和vagrant的安装包安装virtualbox
安装vagrant (path路径的添加一般是自动完成的)
配置一个vagrant项目
配置vagrant项目的第一步是创建一个VagrantFile.
在你的命令行中创建一个项目目录,并且使用: vagrant init 初始化一个VagrantFile.
$ mkdir vagrant_dir
$ cd vagrant_dir
$ vagrant init
这个操作会在vagrant项目目录下创建一个VagrantFile文件
Boxesvagrant使用一个基础的镜像来快速克隆一个虚拟机。这些基础镜像在vagrant中叫做 boxes。在创建好一个VagrantFile后需要规定在当前Vagrant环境中使用的box. boxes的添加可以通过 vagrant box add 命令来实现
$ vagrant box add hashicorp/precise64
这个操作会自动从网络中下载一个名为hashicorp/precise64的box并添加到当前的vagrant环境中。这儿最好还是先从网络上下载下来相应的box,然后在本地对box进行添加。(自动下载的速度慢)这儿其实可以看到boxes是由类似于 username/boxName 的方式命名的
在这个网站可以找到很多boxes : https://atlas.hashicorp.com/boxes/search
在本地添加box的方法:(vagrant box add <name> <url>)
把box文件(例如文件名为: precise64.box)下载后放到当前vagrant项目目录下,然后添加一个名为dev的box到环境中
$vagrant box add dev precise64.box
显示类似如下信息表示添加成功:
Successfully added box 'dev' (v0) for 'virtualbox'!
启动和使用SSH登录
在命令行中键入
$ vagrant up
即可以启动当前vagrant环境,这样就可以运行box的虚拟机环境。然后可以使用命令
$ vagrant ssh
来使用ssh登录到vagrant的box虚拟机环境中进行操作,(一般是 127.0.0.1 : 2222 用户名密码都是vagrant)。
注:这儿使用命令vagrant ssh 是启用默认的ssh客户端,如果没有,可以自己选择一个ssh客户端进行登录。我使用的是putty
同步文件夹默认情况下,vagrant会共享你当前的vagrant项目目录到你客户机的 /vagrant 文件夹下。我们可以用ssh登录到客户机进行查看
$ vagrant up...
$vagrant ssh
...
vagrant@precise64~$ ls /vagrant
VagrantFile
很简单的实现了虚拟机与主机之间的文件夹同步
在VagrantFile文件中我们可以查找到这一行#config.vm.synced_folder
我们可以配置这个参数改变虚拟机和主机同步的文件夹( 先去掉前面的 # 号, 第一个参数使主机的目录,第二个参数是虚拟机的目录)
例如:
config.vm.synced_folder “d:\” “/vagrant_data”
预配置
创建好一个虚拟机环境后,我们可以通过ssh进入虚拟机安装webserver。但vagrant提供了一种自动配置的功能,会在你使用 vagrant up 的时候自动安装。
我们拿安装apache为例
在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文件进行配置config.vm.provision
config.vm.provision :shell, path: “bootstrap.sh”
最后通过 vagrant up 启动。如果已经启动,则可以使用 vagrant reload --provision 重新启动并安装好apache登录ssh,通过 下面命令可以查看效果
$ vagrant ssh
...
vagrant@precise64:~$ wget -qO- 127.0.0.1
这个功能的用法就看大家的创造力了
注: 这儿的脚本只是在第一次使用 vagrant up的时候生效
网络vagrant的网络配置有3种方式, 这3中网络模式实际上在VagrantFile文件中都有详细的注释说明的,我这儿也简单说一下。
端口转发(port forwarding)端口转发允许你指定一个客户机的端口分享到主机的一个端口,这允许你在自己的主机上访问一个端口,但所有的网络流量都是转发到特定的客户机端口上
打开VagrantFile文件,添加如下配置项
config.vm.network :forwarded_port, guest: 80, host: 4567
再通过vagrant up 启动或者是vagrant reload 重启。然后在你自己的浏览器中载入 http://127.0.0.1:4567 ,你将看到vagrant虚拟机中的apache服务器提供的页面
主机模式 (私有网络)这个模式将使得客户机提供一个IP 地址,主机可以通过这个IP访问客户机网络,配置VagrantFile文件中的如下内容:
config.vm.network “private_network”, ip: “192.168.33.10”
公有网络config.vm.network “public_network”
共享Vagrant共享使得你可以通过因特网连接共享你的vagrant环境给世界上任何人。
在此之前需要现在 https://atlas.hashicorp.com 注册一个账号,然后通过 vagrant login 命令登录账号,然后就可以使用 vagrant share 就可以共享环境了。这儿我们先不做重点讨论
回收
挂起
通过 vagrant suspend 将会保存当前客户机的状态并且停止运行。当再次使用 vagrant up 的时候客户机又将恢复之前停止时的状态继续运行
停止vagrant halt 将会关闭客户机系统并且断开客户机的电源。vagrant up 又将启动
销毁vagrant destroy 将会从你的系统中移除客户机的所有使用痕迹,停止客户机,断开电源,并且清空客户机的磁盘。 同样通过 vagrant up 启动
支持平台除了我们使用的VirtualBox,Vagrant与很多后端支持平台协同工作,例如: VMware 和AWS 等
在这些平台上使用时,当平台安装完成,只需要在vagrant环境启动的时候采用合适的参数表明其使用的平台便可以。
例如:
在vmware上:
$vagrant up –provider=vmware_fusion
在AWS上
$ vagrant up –provider=aws
结语好了,今天写得也很多了,常规的vagrant的使用都讲了,其实很多工具都是这样,按照80/20定律,核心的就那么20% 。这20%掌握了其实就可以基本的使用了,本文的意义便在于此,让大家对vagrant的使用有个基础的了解。
如何使用vagrant在虚拟机安装Hadoop集群 http://www.linuxidc.com/Linux/2013-04/82750.htm
Vagrant 中高效的 Puppet 模块管理 http://www.linuxidc.com/Linux/2014-05/101873.htm
利用Vagrant搭建多平台环境 http://www.linuxidc.com/Linux/2015-09/123518.htm
使用 Vagrant 和 Fabric 用于集成测试 http://www.linuxidc.com/Linux/2014-07/104113.htm
使用 Vagrant 搭建开发环境 http://www.linuxidc.com/Linux/2014-07/104116.htm
windows 下配置 Vagrant 环境 http://www.linuxidc.com/Linux/2014-07/104115.htm
使用 Vagrant 搭建开发环境 http://www.linuxidc.com/Linux/2014-07/104116.htm
通过 Vagrant 搭建虚拟机环境 http://www.linuxidc.com/Linux/2015-08/121985.htm
使用Vagrant和Virtualbox创建虚拟机 http://www.linuxidc.com/Linux/2016-08/134435.htm
Ubuntu下使用Vagrant搭建虚拟开发环境 http://www.linuxidc.com/Linux/2016-12/138113.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138934.htm
