virtualbox+vagrant学习-4-Vagrantfile-1-简介
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可用的配置选项
继续往下看