本篇文章主要介绍了" VAGRANTFILE",主要涉及到方面的内容,对于系统运维感兴趣的同学可以参考一下:
VAGRANTFILE概述vagrantfile的基本功能就是描述工程需要的机器,以及如何配置和提供这些机器。vagrantfile被称为vagrantfile...
Vagrant.configure("1")do|config|# v1 configs...endVagrant.configure("2")do|config|# v2 configs...end
最小的vagrant版本信息
在vagrantfile中还可以指定vagrant的版本集合。让使用vagrant的人,必须采用相应的版本。这个对于那些采用太旧或者太新版本引发的兼容性问题非常有用。vagrant版本应当放在vagrantfile的第一行,用vagrant.require_version
Vagrant.require_version">= 1.3.5"
这样的话只有vagrant的版本大于1.3.5的时候,这个vagrantfile才会导入。同样还可以设置最大的版本号。
Vagrant.require_version">= 1.3.5","< 1.4.0"
提示和技巧
vagrantfile有一个非常灵活的配置格式。因为你是用Ruby,可以用来做很多事情。同样相反的一面,这样也会有很多犯错误的地方。当应用这页的提示和技巧的时候,请确保准确。
循环定义VM
如果你想应用稍微不同的配置到多台机器,你可以用一个循环来完成。例如,如果你想创建三台机器
(1..3).eachdo|i|config.vm.define"node-#{i}"do|node|node.vm.provision"shell",inline: "echo hello from node #{i}"endend
# THIS DOES NOT WORK!foriin1..3doconfig.vm.define"node-#{i}"do|node|node.vm.provision"shell",inline: "echo hello from node #{i}"endend
在Ruby的for i in ..语法结构实际上改变了i的值。而不是仅仅一个复制。所以当运行这个命令,每个节点将会采用同一个文本名字。这是一个很容易犯的错误,所以最好的办法是在这提示一下。
在主机的SSH中覆盖
通常,主机的环境变量会传输到客户机。这样的话如果客户机不支持这些变量将会引发错误。一个好的解决方法是在vagrantfile中覆盖。
ENV["LC_ALL"]="en_US.UTF-8"Vagrant.configure("2")do|config|# ...end
这种变化只是在vagrantfile中。
机器设置
配置空间名字:config.vm
config.vm主要用来改变vagrant管理机器的配置
可用设置
- config.vm.boot_timeout-vagrant等待机器的启动和连接时间,单位是秒。默认是300秒
- config.vm.box--这里配置机器启动的box的名字。这个名字应该是被导入的box的名字或者是简单的名字在HashiCorp中,当然这个参数需要vagrant1.5以上的版本。
- config.vm.box_check_update--如果这个设置为true那么vagrant将会检查每个box的更新,当运行vagrantupdate 的时候。如果找到了一个更新,vagrant将会告诉用户。默认情况下这个参数是true.这个命令仅仅检查那些支持更新的box
- config.vm.box_download_checksum--这个校验和是通过config.vm.box_url来指定的。如果没有指定,就不会进行校验和的比对。如果设置了,那么就会同下载的box的校验和进行比较。如果不匹配的话就会报错。校验和只有当需要下载box的时候,才会采用。如果这个数值设置了,那么config.vm.box_download_checksum_type必须指定。
- config.vm.box_download_checksum_type-指定config.vm.box_download_checksum的校验类型,支持的值包括"md5","sha1","sha256"
- config.vm.box._download_client_cert-指定下载box的证书路径。默认情况下,下载box是不需要证书的。
- config.vm.box_download_ca_path-指定下载box的ca证书路径。默认情况会采用Mozilla证书绑定
- config.vm.box_download_insecure-如果设置为true,那么从服务器的SSL证书将不会校验。默认情况下如果URL是HTTPS协议,那么SSL证书将会被检查。
- config.vm.box_download_location_trusted--如果设置为true,那么所有的http重定向将会被允许。也就是说对于给初始的URL证书,将会被用来所有重定向的连接。默认情况下重定向的连接是不被信任的,证书只是给初始的HTTP连接。
- config.vm.box_url--可以配置box的URL。如果config.vm.box是一个box在HashiCorp中的缩写。这个值就不需要指定。相反,这个应当指定到没有导入的box中的合适的地方。这也可以是个URL的数组,那样的话对于每个URL就会逐个试一下。注意,所有客户证书,不安全的下载设置等等都会被用到这个列表的所有URL。同样URL也可以用file://格式保存在文件中。例如:file:///tmp/test.box
- config.vm.box_version--指定采用的box的版本。默认的是“>=0”,当然也可以用逗号,分割例如">=1.0,<1.5".当指定限制的时候,vagrant将会采用最新的满足条件的vagrant
- config.vm.communicator--指定同客户box进行交互的类型。默认这个是'ssh',当然对于windows来说也可改为winrm
- config.vm.gracefule_halt_timeout--当调用vagranthalt将机器停止的时候,vagrant将等待的秒数。默认是60秒。
- config.vm.guest--运行客户机的操作系统。默认的是Linux操作系统。vagrant将会自动检测合适的发行版本。vagrant需要知道这个信息,以方便进行挂载文件夹、配置网络等相关操作。
- config.vm.hostname--机器应该拥有的主机名。默认是nil。如果是nil,vagrant将不会管理主机名字。如果设置成字符串,那么在启动的时候将会设置。
- config.vm.network--配置机器的网络,具体请看网络配置
- config.vm.post_up_message--当运行vagrant up的时候,显示的信息。这个信息是用来显示给用户的,当包含命令的时候很有用,比如说包含获取不同开发环境部分的命令。
- config.vm.provider-这个对于在provider中设置的值进行修改是很有用的。如果你配置的provider不存在或者当运行vagrant up的时候没有安装,vagrant将会忽略配置信息。这个就使即使没有安装同样名字的provider用户,也可以共享使用。
- config.vm.provision--配置机器的provisioner。所以当机器创建的时候软件就会自动安装和配置。
- config.vm.synced_folder--配置机器上的同步文件夹。这样主机上的文件夹将会和客户机相互同步。请参照同步部分,了解具体的配置
- config.vm.usable_port_range--vagrant用来处理端口冲突的一些端口
SSH设置
配置命名空间:config.ssh
这个设置主要是用来管理vagrant如何通过ssh连接你的机器。大多数的Vagrant的默认设置是正常的,但是如果需要的话,可以微调。
可用设置