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 manifestclass 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

转载于:https://www.cnblogs.com/heidsoft/p/3823487.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

framebuffer驱动详解3——fb驱动分析(具体操作层)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 博文fb驱动框架分析&#xff08;核心层&#xff09;已经对内核驱动维护者编写的fb驱动框架进行讲解。 接下来将对具体的fb驱动文件进行分析。这些驱动文件是驱动工程师要完成的部分。 rootubu…

各种分页存储过程 (转)

在项目中&#xff0c;我们经常遇到或用到分页&#xff0c;那么在大数据量&#xff08;百万级以上&#xff09;下&#xff0c;哪种分页算法效率最优呢&#xff1f;我们不妨用事实说话。 测试环境 硬件&#xff1a;CPU 酷睿双核T5750 内存&#xff1a;2G 软件:Windows server 20…

java连接phpstudy_PHPStudy快速自动搞定所有配置文件

phpStudy 是一个 PHP 调试环境的程序集成包。该程序包集成最新的 ApachePHPMySQLphpMyAdminZendOptimizer, 一次性安装 , 无须配置即可使用 , 是非常方便、好用的 PHP 调试环 境 . 该程序不仅包括 PHP 调试环境 , 还包括了开发工具、开发手册等 . 总之学习 PHP 只需一个包 . 对…

ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?

症状&#xff1a; 类似上面的警告提示&#xff0c;运行程序不会有任何错误&#xff0c;但若干地方都提示警告&#xff0c;并且明明dll的引用都是正确的。 解决方案&#xff1a; 删除&#xff1a;C:\Users\{your computer name}\AppData\Local\Temp\Temporary ASP.NET Files 该目…

framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习&#xff0c;如有侵权&#xff0c;请告知删除。 主要在填充fbdev这个结构体。 二、framebuffer驱动分析2 1、probe函数分析 &#xff08;1&#xff09;struct s3c_platform_fb 这个结构体是fb的platform_data结构体&#xff1…

Zend Framework学习之Zend_Mail

Zend_Mail组件提供了通用化的功能来创建和发送文本。Zend_Mail通过PHP内建的mail()函数或者直接通过SMTP连接来发送邮件。一个简单的邮件由收件人、主题、邮件内容以及发件人等内容组成。步骤如下1.创建对象2.设置邮件内容3.发送案例&#xff1a; <?php require_once "…

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中&#xff0c;发现XenDesktop5版本的数据库镜像事务日志很大&#xff0c;在XenDesktop4和XenApp版本中不存在该问题&#xff1b;于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么…

nanotime java 博客园_System.nanoTime (计时工具类)

转自&#xff1a;http://blog.csdn.net/yuansuruanjian/article/details/8562890JDK1.5之后java中的计时给出了更精确的方法&#xff1a;System.nanoTime()&#xff0c;输出的精度是纳秒级别&#xff0c;这个给一些性能测试提供了更准确的参考。但是这个方法有个需要注意的地方…

input子系统详解1——input子系统简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 转载博客&#xff1a;input输入子系统 - 涛少& - 博客园​​​​​​​ 前言 Linux系统支持的输入设备繁多&#xff0c;例如键盘、鼠标、触摸屏、手柄等等&#xff0c;Linux系统是如何管理如此…

ie compatibility

http://www.red-team-design.com/how-to-solve-common-ie-bugs转载于:https://www.cnblogs.com/daishuguang/archive/2013/04/20/3031900.html

【04】Effective Java - 类和接口

为什么80%的码农都做不了架构师&#xff1f;>>> 1、使类和成员的可访问性最小化 封装是软件设计的基本原则之一&#xff0c;它的好处就是解除组成系统的各个模块之间的耦合关系&#xff0c;使得这些模块可以独立地开发、测试、优化、使用、理解 修改&#xff0c;同…

java 圆的交点_java – 获取线条和形状的交点

理念您可以使用getPathIterator()方法将GenenralPath解构为其段(移动到,行到,四到,立方到,关闭).现在,您可以搜索每个线段与线的交叉点.public static Point[] getIntersections(Path path, Line line) {List intersections new ArrayList();PathIterator it path.getPathIte…

OpenGL运用辅佐库创立规矩几许目标

辅佐类分类&#xff1a; 1&#xff09;窗口初始化函数 2&#xff09;窗口处置和工作处置函数 3&#xff09;定义场景制造循环函数 4&#xff09;三围物体制造函数 5&#xff09;颜色索引表装入函数 6&#xff09;空闲工作处置函数 下面描写了一个程序&#xff0c;该程序尽可以包…

input子系统详解2——应用层代码实践

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、编程步骤总结 步骤1&#xff1a;确定设备文件名字 步骤2&#xff1a;使用标准接口打开与读取设备文件 步骤3&#xff1a;解析struct input_event 二、编程步骤分析 1、确定设备文件名 应用层操作…

构造函数初始化器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 {class Program{static void Main(string[] args){cat c new cat("萌萌");//先执行cat(string s,int i)构造…

oracle中的视图详解

1.视图的概述 视图其实就是一条查询sql语句&#xff0c;用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用&#xff0c;因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表&#xff0c;所有对视图数据的修改最终都会被反映到视图的基…

input子系统详解3——input子系统框架核心层分析

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权请告知删除。 一、前言 由input子系统简介可知&#xff0c;input子系统分为三层&#xff1a; 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0c;分别对应…

java servlet 部署到tomcat_如何把spring boot项目部署到tomcat容器中

把spring-boot项目按照平常的web项目一样发布到tomcat容器下一、修改打包形式在pom.xml里设置 war二、移除嵌入式tomcat插件在pom.xml里找到spring-boot-starter-web依赖节点&#xff0c;在其中添加如下代码&#xff0c;org.springframework.bootspring-boot-starter-weborg.sp…

Gitlab Merge Request Builder Plugin 配置小记

2019独角兽企业重金招聘Python工程师标准>>> 以前在给一些开源项目贡献代码的时候&#xff0c;在github上一提交pull request或者提交的分支代码更新了的时候&#xff0c;jenkins就会自动把代码进行merge并且运行单元测试&#xff0c;当时看了心里就2个字&#xff1…

IOS:屏幕旋转与Transform

IOS&#xff1a;屏幕旋转与Transform iTouch&#xff0c;iPhone&#xff0c;iPad设置都是支持旋转的&#xff0c;如果我们的程序能够根据不同的方向做出不同的布局&#xff0c;体验会更好。 如何设置程序支持旋转呢&#xff0c;通常我们会在程序的info.plist中进行设置Supporte…