本篇文章主要介绍了" VAGRANTFILE",主要涉及到方面的内容,对于系统运维感兴趣的同学可以参考一下:
VAGRANTFILE概述vagrantfile的基本功能就是描述工程需要的机器,以及如何配置和提供这些机器。vagrantfile被称为vagrantfile...
VAGRANTFILE
概述
vagrantfile的基本功能就是描述工程需要的机器,以及如何配置和提供这些机器。vagrantfile被称为vagrantfile也仅仅是因为配置文件的文件名就是vagrantfile。vagrant对于每个项目都有一个vagrantfile文件,vagrantfile还被用来进行版本控制。这就可以让这个项目的其他开发人员,来导出代码,运行vagrant up命令来启动。vagrantfile适用于vagrant支持的每个平台。vagrantfile的语法是Ruby,但是并不是说需要有Ruby的相关知识,才能修改Vagrantfile。因为vagrantfile的文件内容仅仅是赋值操作。实际上,即使没有Ruby的相关知识,也可以非常成功的使用vagrant.
查找路径
当运行vagrant命令时候,vagrant就会自动从当前目录开始,寻找vagrantfile所在的路径。如果当前你运行vagrant的目录是/home/mitchellh/projects/foo,它就会从如下的目录中寻找vagrantfile,直到找到它。
/home/mitchellh/projects/foo/Vagrantfile
/home/mitchellh/projects/Vagrantfile
/home/mitchellh/Vagrantfile
/home/Vagrantfile
/Vagrantfile
这个功能,可以让你在任何目录下都可以运行vagrant命令。当然也可以通过设置vagrant_CWD环境变量来设置vagrant开始查找的目录。
加载顺序和合并
vagrant导入vagrantfile文件的一个重要的概念是,vagrant确实导入了一系列的vagrantfile,合并了他们设置。不同层次设置的参数,就会覆盖之前的设置。vagrantfile是按照如下的顺序导入的。如果当前vagrantfile没有找到文件,就会继续运行下一步。
1、vagrantfile打包在需要使用的box里面。
2、vagrantfle在你的vagrant目录下,这个为系统用户可以指定默认设置
3、指定项目的vagrantfile,对于不同的项目vagrantfile是不同的。
4、Multi-machine
5、Provider-secific
对于每个层次来说,设置的参数都会和之前层次的参数合并。对于大多数设置来说,最新的设置,覆盖老的设置。然而,对于网络的设置会应用到每个.默认情况下,你应该假定那些设置会覆盖每个应用。如果有不同的地方,应该在相关的文档里面说明。对于每个vagrantfile,你可以指定多个vagrant.configure区域,所有的vagrantfile最终都会被合并到一个vagrantfile里面。
配置版本
vagrant1.1以后的配置版本的机制,主要用来向后兼容vagrant1.0.X的版本。如果运行vagrantinit命令,vagrantfile将会被创建成如下形式。
Vagrant.configure("2")do|config|# ...end
在第一行的“2”代表配置的版本,“config”被用来配置,这个对于不同的版本来说是不一样的。当前只是支持两个版本“1”和“2”。“1”代表版本vagrant 1.0.x。"2"代表从1.1+到2.0.x。当导入vagrantfile的时候,vagrant对于不同的版本应用不同的配置或者合并他们。
对于vagrant的通常用户来说,在一个配置会话里面,只有一个版本可以使用。可以使用config.vm.provider来版本1的配置会话里面。就像,config.vm.forward-port不会在版本2的配置会话里面。如果需要可以在一个vagrantfile里面混合多个配置信息。这个对你寻找一个有用的配置片段。