Vagrantfile

Vagrantfile的主要功能是描述项目所需的机器类型,以及如何配置和提供这些机器。之所以称为Vagrantfiles,是因为文件的实际文本文件名是Vagrantfile(除非文件系统在严格的区分大小写模式下运行,否则大小写无关紧要)。

每个项目运行一个Vagrantfile文件,Vagrantfile文件应该提交给版本控制。这允许参与项目的其他开发人员检查代码,运行vagrant up,并继续他们的工作。Vagrantfile文件可移植到每个支持vagrant的平台。

Vagrantfile的语法是Ruby,但修改Vagrantfile并不需要了解Ruby编程语言,因为它主要是简单的变量赋值。实际上,Ruby甚至不是最受欢迎的社区vagrant,这应该有助于说明,尽管人们没有Ruby知识,但vagrant是非常成功的。

1.Lookup Path查找路径

当运行任何vagrant命令时,vagrant会爬上目录树,寻找它能找到的第一个Vagrantfile,首先从当前目录开始。所以如果你在/home/mitchellh/projects/foo中运行vagrant,它会搜索以下路径来寻找流浪者文件,直到找到一个:

/home/mitchellh/projects/foo/Vagrantfile
/home/mitchellh/projects/Vagrantfile
/home/mitchellh/Vagrantfile
/home/Vagrantfile
/Vagrantfile

这个特性允许你从项目中的任何目录运行vagrant。
通过将VAGRANT_CWD环境变量设置为其他路径,可以更改vagrant查找Vagrantfile文件的起始目录。

2.Load Order and Merging加载顺序和合并

需要理解的一个重要概念是vagrant如何加载Vagrantfile文件。实际上,vagrant加载了一系列Vagrantfiles文件,并合并了设置。这允许不同级别的Vagrantfiles文件覆盖以前的设置。Vagrantfile按如下所示的顺序加载。请注意,如果在任何步骤中没有找到Vagrantfiles,vagrant将继续下一步。

  • 与给定的机器中的box一起打包的Vagrantfile
  • 在你的根目录下的Vagrantfile (默认指向 ~/.vagrant.d目录)。这允许你为系统用户指定一些默认值
  • 来自项目目录的Vagrantfile。你可以在这个Vagrantfile文件中为系统用户指定一些默认值——这就是大多数时候要修改的Vagrantfile。
  • 多机器覆盖(如果有的话),Multi-machine overrides
  • 指定provider覆盖(如果有的话),Provider-specific overrides

在每个级别,设置集将与以前的值合并。这究竟意味着什么,取决于环境。对于大多数设置,这意味着新的设置将覆盖旧的设置。然而,对于诸如定义网络之类的事情,网络实际上是相互附加的。默认情况下,你应该假设设置将相互覆盖。如果行为不同,将在相关文档部分中记录。

在每个Vagrantfile文件中,你可以指定多个Vagrant.configure块。所有配置将按照定义的顺序合并到一个Vagrantfile文件中。

3.Available Configuration Options可用的配置选项

继续往下看

virtualbox+vagrant学习-4-Vagrantfile-1-简介的更多相关文章

  1. virtualbox+vagrant学习-2(command cli)-26-vagrant share命令

    Share share命令初始化了一个vagrant share会话,允许你与世界上任何一个人共享vagrant环境,允许在几乎任何网络环境中直接在vagrant环境中进行协作. 你可以在本博客的vi ...

  2. virtualbox+vagrant学习-1-环境安装及vagrantfile的简单配置-Mac系统

    在学习docker-machine时,发现需要使用到虚拟化平台,所以选择了使用virtualBox. 然后后面发现需要使用vagrant来在mac系统中作为虚拟机管理软件,所以下面将会简述我自己学习使 ...

  3. virtualbox+vagrant学习-2(command cli)-8-vagrant Package命令

    Package 格式: vagrant package [options] [name|id] 这将当前正在运行的VirtualBox或Hyper-V环境打包到一个可重用的box中.如果provide ...

  4. virtualbox+vagrant学习-3-Vagrant Share-2-HTTP Sharing

    HTTP Sharing Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器.这被称为“HTTP共享”,在使用Vagrant Share时默认 ...

  5. virtualbox+vagrant学习-5-Boxes-1-简介

    Boxes boxes是vagrant环境的包格式.在vagrant支持的任何平台上,任何人都可以使用一个box来创建一个相同的工作环境.vagrant box实用程序提供了管理boxes的所有功能. ...

  6. virtualbox+vagrant学习-5-Boxes-2-Box Versioning

    Box Versioning 从Vagrant 1.5版本开始, box支持版本控制.这允许创建box的人将更新推送到box中,使用box的人有一个简单的工作流,用于检查更新.更新box以及查看发生了 ...

  7. virtualbox+vagrant学习-2(command cli)-6-vagrant init命令

    Init——创建Vagrantfile文件 格式: vagrant init [options] [name [url]] 通过创建初始的Vagrantfile文件(如果不存在的话),将当前目录初始化 ...

  8. virtualbox+vagrant学习-2(command cli)-10-vagrant Port命令

    Port 格式: vagrant port [options] [name|id] 端口命令显示映射到主机端口的客户端口的完整列表 userdeMacBook-Pro:~ user$ vagrant ...

  9. virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令

    Reload 格式: vagrant reload [vm-name] 其等价于在运行vagrant up命令后接着运行vagrant halt 要使在Vagrantfile文件中所做的更改生效,通常 ...

  10. virtualbox+vagrant学习-2(command cli)-17-vagrant ssh命令

    SSH 格式: vagrant ssh [options] [name|id] [-- extra ssh args] 这将SSH导入正在运行的vagrant机器,并允许你访问机器的shell. us ...

随机推荐

  1. 规范大于编码-我的javaWeb开发规范

    1.应用名称和数据库名称一致 2.javaBean类名称+s和数据库表名一致 3.返回一条数据时,变量名为javaBean类名称的小写;返回多条数据时,变量名为javaBean类名称的大写 4.jav ...

  2. UOJ#328. 【UTR #3】量子破碎

    传送门 学过 \(FWT\) 看到操作 \(2\) 不难可以联想到 \(FWT\) 考虑一遍 \(\oplus\) \(FWT\) 会把 \(a_t\) 变成什么 \(a_t'=((-1)^{bitc ...

  3. LOJ#6463 AK YOI 树分治+线段树合并

    传送门 既然是树上路径统计问题,不难想到要使用树分治,这里以点分治为例 由点分治的性质,每层只需要考虑经过重心的路径 因为需要维护路径长度在一定范围内的最大权值和,所以要用一个数据结构维护一下到根节点 ...

  4. 搭建本地svn

      1. 下载并安装TortoiseSVN,下载地址为:http://tortoisesvn.net/downloads.html.        2. 在本地创建一个文件夹,作为SVN服务的文件夹. ...

  5. mysql 导入时报错:Got a packet bigger than‘max_allowed_packet’bytes

    原因是max_allowed_packet 值设置过小. 网上粘贴一段定义: max_allowed_packet:指代mysql服务器端和客户端在一次传送数据包的过程当中数据包的大小这个是定义mys ...

  6. android IO流操作文件(存储和读取)

    存储文件: public class FileOperate extends Activity { private static final String FILENAME = "mydat ...

  7. Android 进程回收

    1.Android 进程回收策略 众所周知,Android是基于Linux系统的.在Android进程回收策略中,Android进程与Linux进程根据OOM_ADJ阈值进行区分: OOM_ADJ & ...

  8. LeakCanary上传 leak trace 到服务器

    你可以改变处理完成的默认行为,将 leak trace 和 heap dump 上传到你的服务器以便统计分析. 创建一个 LeakUploadService, 最简单的就是继承 DisplayLeak ...

  9. leetcode之二叉树的层序遍历

    1.题目描述 2.题目分析 二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法.例如图的广度优先遍历就可以使用队列的方法实现.本题的关键在于如何识别出一层已 ...

  10. Dos命令删除添加新服务

    安装服务sc create Svnservice binpath= "d:\subversion\bin\svnserve.exe --service -r E:\projectversio ...