原文地址

Vagrantfile 的主要用途是描述用于项目的机器类型,以及如何配置和提供这些机器。

Vagrant 的每个项目运行一个 Vagrantfile,并且 Vagrantfile 应该被提交到版本控制。这允许参与该项目的其他开发人员检查代码,运行 vagrant up。Vagrantfile 可以在 Vagrant 支持的每个平台上移植。

Vagrantfiles 的语法是 Ruby,但对 Vagrantfile 进行修改并不需要有关 Ruby 编程语言的知识,因为基本上只需要简单的变量赋值。

1. 查找路径

运行 vagrant 命令时,Vagrant 会从当前目录开始依次查找目录树,寻找第一个匹配的 Vagrantfile。假如在 /home/mitchellh/projects/foo 目录中运行 vagrant,会依次在下面的目录中查找 Vagrantfile,直到找到为止:

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

这个特征使得你可以在项目的任何目录中运行 vagrant。

可以设置 VAGRANT_CWD 环境变量指向某个其他路径,来改变 Vagrant 查找 Vagrantfile 文件的起始目录。

2. 加载顺序和合并

必须理解的一个重要概念是 Vagrant 如何加载 Vagrantfile。Vagrant 实际上加载了一系列的 Vagrantfile,并将合并设置。这允许具有不同特异性等级的 Vagrantfile 覆盖之前的设置。Vagrantfile 按以下所示顺序加载。注意,如果在任何步骤中未找到 Vagrantfile,Vagrant 将继续执行下一步。

  1. 与用于给定机器的 box 一起打包的 Vagrantfile。
  2. Vagrant 主目录中的 Vagrantfile(默认为 ~/.vagrant.d)。这使你可以为系统用户指定一些默认值。
  3. 项目目录中的 Vagrantfile。通常,你只需要修改这个 Vagrantfile。
  4. 多台机器覆盖,如果有多台机器的话。
  5. 特定 provider 的覆盖,如果有的话。

在每个级别,设置将与之前的值合并。具体细节取决于设置类型。对于大多数设置,较新的设置将覆盖较旧的设置。但是,对于诸如定义网络之类的事情,网络实际上是相互追加。默认情况下,应该假定设置将相互覆盖。如果行为不同,将在相关文档部分注明。

在每个 Vagrantfile 中,可以指定多个 Vagrant.configure 块。所有配置将按照它们定义的顺序在单个 Vagrantfile 中合并。

Vagrant 手册之 Vagrantfile - 概述的更多相关文章

  1. Vagrant 手册之 Vagrantfile - 最低版本

    原文地址 可以在 Vagrantfile 中指定一组 Vagrant 的版本,以强制人们使用带有 Vagrantfile 的特定版本的 Vagrant.这可以帮助解决使用带有 Vagrantfile ...

  2. Vagrant 手册之网络 - 概述及基本用法

    原文地址 - 概述 原文地址 - 基本用法 为了访问创建的 Vagrant 环境,Vagrant 为端口转发.连接公共网络.创建私有网络等功能暴露了一些高层网络选项. 高层网络选项用于提供可以跨 pr ...

  3. Vagrant 手册之 Vagrantfile - 机器设置 config.vm

    原文地址 配置的命名空间:config.vm config.vm 中的设置修改 Vagrant 管理的机器的配置. 1. 可用的设置项 config.vm.boot_timeout Vagrant 等 ...

  4. Vagrant 手册之 Vagrantfile - 提示及技巧

    原文地址 Vagrantfile 是一种非常灵活的配置格式.语法基于 Ruby,可以用它做很多事情.在本页使用一些提示和技巧时,请注意正确使用它们. 1. 使用循环定义虚拟机 如果你想对多机器应用稍微 ...

  5. Vagrant 手册之 Vagrantfile - 配置版本

    原文地址 配置版本是 Vagrant 1.1+(引入了大量新功能和配置选项) 能够与 Vagrant 1.0.x Vagrantfiles 保持向后兼容的机制. 现在运行 vagrant init 时 ...

  6. Vagrant 手册之 box - 概述

    原文地址 box 是 Vagrant 环境中使用的包格式.box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境. vagrant box 工具提供了管理 box 的所有 ...

  7. Vagrant 手册之 Provisioning - 概述

    原文地址 通过 Vagrant 中的 provisioner 配置程序,可以在使用 vagrant up 启动虚拟机时,在虚拟机上执行安装软件.更改配置等操作. box 通常是通用的,而每个项目总有自 ...

  8. Vagrant 手册之 Vagrantfile - Vagrant 设置 config.vagrant

    原文地址 配置的命名空间:config.vagrant config.vagrant 中的设置修改 Vagrant 自身的行为. 1. 可用设置 config.vagrant.host 设置运行 Va ...

  9. Vagrant 手册之 Vagrantfile - SSH 设置 config.ssh

    原文地址 配置的命名空间:config.ssh config.ssh 中的设置与配置 Vagrant 如何通过 SSH 访问您的计算机相关. 大多数 Vagrant 设置一样,一般使用默认设置即可,但 ...

随机推荐

  1. new String创建了几个对象

    String str = new String(“abc”)  到底创建了几个对象? 首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String(& ...

  2. Redis: 分布式锁的正确实现方式(转)

    前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...

  3. C#linq计算总条数并去重复的写法

    一,在实际需求中我们会存在选出了一个集合,而这时我们需要通过集合的某几个字段来计算重复,和统计重复的数量,这时我们可以用到linq来筛选和去重复. 二,如下代码: using System; usin ...

  4. 06-JavaScript简介

    ### 前段三大块 ```HTML css JavaScript``` ### 什么是JavaScript? JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户 ...

  5. 获取请求头中User-Agent工具类

    public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...

  6. [好好学习]在VMware中安装Oracle Enterprise Linux (v5.7) - (1/5)

    在想到Oracle Enterprise Linux,第一时间就是在Oracle官网上找到资源,但是,出现以下图片

  7. 字符串format函数使用

    #format拼接字符串,format()内的参数必须为可迭代的对象p1="i am {2},age {1},{0}".format("seven",18,'a ...

  8. js----定义变量的几种方式

    const const定义的变量不可以修改,而且必须初始化 const b = 2 //正确 //const b //错误,没有初始化 console.log('函数外const定义b:' + b); ...

  9. Spring Boot Shiro

    Shiro 核心 API Subject:用户主体(每次请求都会创建Subject). principal:代表身份.可以是用户名.邮件.手机号码等等,用来标识一个登录主体的身份. credentia ...

  10. chrles设置断点

    1.选择你要断点的接口,右键Breakpoints 2.配置断点接口proxy>Breakpoint settings query设置为* 3.开始断点,重新抓取接口 修改入参.请求头 修改出参 ...