Vagrantfile文件介绍

it2025-05-29  10

文章目录

1:Vagrantfile2:装载命令和合并(Load Order and Merging)3:查找路径(Lookup Path)4:配置版本(Configuration Version)

1:Vagrantfile

Vagrantfile的主要功能是描述项目所需的机器类型,以及如何配置和提供这些机器。Vagrantfiles之所以称为Vagrantfiles,是因为该文件的实际文本文件名是Vagrantfile(除非您的文件系统在严格区分大小写的模式下运行,否则大小写并不重要)。 Vagrant意味着每个项目运行一个Vagrantfile,并且该Vagrantfile应该提交给版本控制。这允许参与项目的其他开发人员签出代码,运行vagrant up,并继续他们的工作。vagrantfile可以跨Vagrant支持的每个平台移植。 Vagrantfile的语法是Ruby,但对Ruby编程语言的了解并不是修改该Vagrantfile所必需的,因为它主要是简单的变量赋值。事实上,Ruby甚至不是最受欢迎的Vagrant使用的社区,这可以帮助您了解,尽管没有Ruby知识,但人们使用Vagrant是非常成功的。

2:装载命令和合并(Load Order and Merging)

需要理解的一个重要概念是Vagrant如何加载vagrantfile。Vagrant实际上加载一系列vagrantfile,并在运行过程中合并设置。这允许不同级别特异性的vagrantfile覆盖之前的设置。Vagrantfiles的加载顺序如下所示。注意,如果在任何步骤中都没有找到Vagrantfile,则Vagrant将继续执行下一个步骤。 与用于给定机器的盒子一起打包的文件。在您的Vagrant主目录中的Vagrantfile(默认为~/. Vagrant .d)。这允许您为系统用户指定一些默认值。从项目目录中的Vagrantfile。这就是您将在大多数时间修改的Vagrantfile。如果有的话,多机器覆盖。特定于提供程序的覆盖(如果有的话)。 在每个级别,设置设置将与以前的值合并。这具体意味着什么取决于设置。对于大多数设置,这意味着新设置将覆盖旧设置。然而,对于定义网络这样的事情,网络实际上是相互附加的。默认情况下,您应该假设设置将相互覆盖。如果行为不同,将在相关文档部分中加以说明。在每个Vagrantfile文件中,可以指定多个Vagrantfile.configure。所有配置将按照它们定义的顺序合并在一个Vagrantfile中。

3:查找路径(Lookup Path)

当您运行任何vagrant命令时,vagrant会沿着目录树查找它能找到的第一个Vagrantfile,首先从当前目录开始。所以如果你在/home/mitchellh/project /foo中运行vagrant,它会搜索以下路径来寻找一个Vagrantfile,直到找到一个:

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

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

4:配置版本(Configuration Version)

Vagrant.configure("2") do |config| # ... end 上面第一行中的“2”表示配置对象配置的版本,它将用于该块的配置(在do和end之间的部分)。这个对象可能因版本不同而有很大的不同。目前,只有两个支持版本:“1”和“2”。版本1表示来自Vagrant 1.0.x的配置。“2”表示1.1+到2.0.x的配置。在加载vagrantfile时,Vagrant为每个版本使用正确的配置对象,并正确地合并它们,就像其他配置一样。作为Vagrant的普通用户,需要理解的重要一点是,在单个配置部分中,只能使用单个版本。您不能使用新的config.vm。版本1配置部分中的提供程序配置。同样地,config.vm。forward_port在版本2的配置部分中不起作用(它已被重命名)。 如果您愿意,可以在同一个Vagrantfile中混合和匹配多个配置版本。如果您发现一些有用的配置片段或您想要使用的内容,这将非常有用。例子: Vagrant.configure("1") do |config| # v1 configs... end Vagrant.configure("2") do |config| # v2 configs... end
最新回复(0)