Vagrant 快速入门
1. Vagrant功能:
Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virtual machines dynamically..
【Vagrant 使用Oracle VM VirtualBox 动态创建和配置轻量级的,可重现的,便携的虚拟机环境。】
2. Vagrant下载:
http://downloads.vagrantup.com/tags/v1.0.5
3. Vagrant安装:
3.1. 下载并安装Oracle VM VirtualBox: 例如在Windows环境下,需要安装VirtualBox-4.2.0-80737-Win.exe
https://www.virtualbox.org/wiki/Downloads
3.2. 下载并安装最新版本的Vagrant:
http://downloads.vagrantup.com/
[注]在 Windows and Mac OS X,vagrant 命令应该自动添加到环境变量PATH. 但是在其他操作系统下, 你必须手动添加/opt/vagrant/bin 到环境变量PATH。
4. Vagrant命令
Vagrant安装完成之后,我们就可以从命令行通过vagrant命令来进行操作。vagrant 常用命令如下:
vagrant box add <name> <url>
vagrant box list
vagrant box remove <name>
vagrant box repackage <name>
vagrant init [box-name] [box-url]
vagrant up [vm-name] [--[no-]provision] [-h]
vagrant destroy [vm-name]
vagrant suspend [vm-name]
vagrant reload [vm-name]
vagrant resume [vm-name]
vagrant halt [vm-name]
vagrant status [vm-name]
vagrant package [vm-name] [--base name] [--output name.box][--include one,two,three] [--vagrantfile file]
vagrant provision [vm-name]
vagrant ssh [vm-name] [-c command] [-- extra ssh args]
vagrant ssh-config [vm-name] [--host name]
5. Vagrantfile
任何Vagrant工程下都有一个Vagrantfile, 就像makefile一样,Vagrantfile用来配置vagrant的行为所创建虚拟机的信息,下面是一个基本的Vagrantfile:
Vagrant::Config.run do |config|
# Setup the box
config.vm.box = "my_box"
end
6. 创建第一个Vagrant虚拟环境以及工程:
(1)创建工程目录, 并且执行vagrant init命令,该命令会产生最初的 Vagrantfile
$ mkdir vagrant_guide
$ cd vagrant_guide
$ vagrant init
(2)添加一个Base Box:
Vagrant不是从头开始创建虚拟机,而是导入一个虚机的base image,在这个基础上进行构建。这些image就叫做Box.
Vagrant 支持从本地文件系统或者HTTP URL来添加boxes
$vagrant box add base http://files.vagrantup.com/lucid32.box
$vagrant box add base D:\lucid32.box
(3)配置Project使用这个Box: 修改Vagrantfile为如下内容:
Vagrant::Config.run do |config|
config.vm.box = "base"
end
(4)启动虚拟机
$vagrant up
(5)停掉虚拟机
$vagrant destroy
(6) SSH配置
Vagrant 提供了对虚拟机的SSH连接,只需要执行一个命令:
$vagrant ssh
在Windows环境下可以使用PUTTY,配置下面的信息来连接虚拟机:
hostname: localhost
port: 2222
Connection Type: SSH
User Name: vagrant
Password: vagrant
(7)访问刚才创建的Project.
Vagrant 通过VirtualBox的shared folder来连接你的application和虚拟机, 默认的shared folder的卫士是/vagrant, 所以想要查看刚才创建的项目,只需要执行:
vagrant@lucid32:~$ ls /vagrant
index.html Vagrantfile
(8) Provisioning:
通常情况下Box只做最基本的设置,而不是一次到位的设置好所有的环境。Vagrant通常使用chef或者Puppet来做进一步的环境搭建。
回到刚才创建的index.html,我们需要安装Apache。我们下面用Puppet来完成这一设置。
1. 在项目的根目录下创建文件夹manifests,然后在该文件家中创建Puppet的配置文件default.pp,该文件内容如下:
# Basic Puppet Apache manifest class apache {
exec { 'apt-get update':
command => '/usr/bin/apt-get update'
} package { "apache2":
ensure => present,
} service { "apache2":
ensure => running,
require => Package["apache2"],
}
} include apache
2. 在Vagrantfile里添加对Puppet provisioning的支持:
Vagrant::Config.run do |config|
config.vm.box = "base"# Enable the Puppet provisioner
config.vm.provision :puppet
end
(9) 运行Project
为了使puppet的配置生效,如果不重启虚机,则需要执行vagrant reload命令。
$ vagrant reload
因为没有配置port forwarding,所以你还不能从本地浏览器查看Project的输出。只能SSH到虚拟机上查看127.0.0.1的输出:
(10) 进行端口映射
修改Vagrantfile, 添加本地端口和虚机端口的映射关系, 然后执行vagrant reload, 然后你就可以通过本地浏览器来访问:http://localhost:4567.
Vagrant::Config.run do |config|
# Forward guest port 80 to host port 4567
config.vm.forward_port 80, 4567
end

7. 打包 Packaging
1. 创建一个新的文件Vagrantfile.pkg,内容如下:
Vagrant::Config.run do |config|
# Forward apache
config.vm.forward_port 80, 8080
end
2. 打包Project
$ vagrant package --vagrantfile Vagrantfile.pkg
8. 打包完成后,在工程根目录下就会生成package.box,别人就可以使用这个Box了:
$ vagrant box add my_box /path/to/the/package.box
$ vagrant init my_box
$ vagrant up
来自:http://blog.csdn.net/jillliang/article/details/8251242
Vagrant 快速入门的更多相关文章
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度(转)
本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/629891 本博客已迁移到本人独立博客: http://www.yun5u ...
- linux 命令部分说明
shell 文件头格式 #! /bin/sh 定义变量 dir_tmp=/tmp/xxx 级联创建 mkdir -p /etc/aaa/bbb 阻塞命令 等待用户输入回车 继续 read ...
- iostat的深入理解
问题背景 iostat -xdm 1 通常用来查看机器磁盘IO的性能. 我们一般会有个经验值,比如,ioutil要小于80%, svctm要小于2ms. 前几天碰到一个奇怪的现象:有一台SSD机器,磁 ...
- JSTL获取list的大小,jstl获取list 的长度,EL表达式获取list的长度,EL表达式获取list大小
在jsp页面中不能通过${list.size}取列表长度,而是 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pref ...
- DataTable添加列和行的三种方法
JRoger 原文 #region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc ...
- 怎样学法学?——民法学泰斗王利明教授的演讲 z
今晚我讲“怎样学习法律”,但不是讲一般的学习法学的方法,而是主要从法学.法律的特征讲起.(因为)我们学习任何东西,都首先要搞清楚我们的学习对象有什么特征.性质. 我们要了解法律.法学本身的性质,要了解 ...
- zzzzz
Extension Method: Return another string if string is null or emptyJust a tiny little extension metho ...
- Masonry 固定宽度 等间距
-(void)makeEqualDisViews:(NSArray *)views inView:(UIView *)containerView LRpadding:(CGFloat)LRpaddin ...
- LoadRunner error -27728
错误现象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired whendownloading no ...
- Linux基本命令(6)线上查询的命令
线上查询的命令 命令 功能 man 查询和解释一个命令的使用方法,以及这个命令的说明事项 locate 定位文件和目录 whatis 寻找某个命令的含义 6.1 man命令 man命令用来查询和解释一 ...