Vagrant-入门指南-翻译

翻译不易,转载请附上原地址!
参考文章:
	http://tangbaoping.github.io/vagrant_doc_zh/v2/
	http://www.huangxiaobai.com/archives/879
	https://jimmysong.io/posts/vagrant-intro/

Introduction to Vagrant - Vagrant 介绍
	Vagrant 是一个 '在单个工作流中构建和管理虚拟环境的' 工具。凭借易于使用的工作流和专注于自动化,Vagrant 降低了开发环境设置时间,提高了产品平价(increases production parity),并使 "在我的机器上运行正常" 这样的借口消失。

	如果你已经熟悉 Vagrant 的基础知识,可以查看文档获取更多内容。

	Why Vagrant? - 为什么使用 Vagrant?
		Vagrant 提供了易于配置、可重复使用、便携的工作环境,它构建于行业标准技术之上,通过一个统一的流程控制,来最大限度地提高团队的灵活性及生产力。

		为了实现其功能,Vagrant 站在了巨人的肩膀上。基于VirtualBox、VMware、AWS 或 任何其他虚拟机管理软件(provider)的接口来创建虚拟机。然后,行业标准配置工具(provisioning tools),例如 shell 脚本、Chef 或 Puppet,可以在 Vagrant 创建的虚拟机上,自动安装及配置软件。

	For Developers - 对于开发人员
		如果你是一位 开发者 , Vagrant 可以为你创建一个将所有依赖及配置隔离、便携统一的虚拟开发环境,因此你可以继续使用已经习惯了的开发工具(比如 编辑器、浏览器、调试器等)进行工作,编写的代码则运行在 Vagrant 创建的统一虚拟开发环境下。 当你或其他人创建了一个 Vagrantfile 配置文件 后, 只需要输入 vagrant up 命令便可自动安装及配置,你便可以进行开发工作了。团队其他成员使用相同的 Vagrantfile 配置文件创建自己的开发环境后,则所有成员都具有相同的代码运行环境,所以无论你工作在 Linux、Mac OS X 还是 Windows 下,你团队所有成员的代码都运行在拥有相同依赖及配置的统一虚拟环境里。跟 “在我的机器上运行没事” 说再见吧,再也不会出现因环境不同而出现 bug 的情况了。

	For Operators - 对于运维人员
		如果你是一位 运维工程师(operations engineer)或 DevOps 工程师, Vagrant 为你提供了一个便携环境和统一的流程,来对运维脚本进行开发及测试。你可以快速地测试 shell 脚本、 Chef cookbooks、 Puppet 模块, 以及使用本地虚拟化,例如 VirtualBox 或 VMware。此外, 你还可以在远程的云端,例如 AWS 或 RackSpace 上使用 相同的配置和相同的流程。例如,使用你的自定义脚本来回收 EC2 实例, stop juggling SSH prompts to various machines, 使用 Vagrant 将使你的人生更加智能。

	For Designers - 对于设计人员
		如果你是 设计师 , Vagrant 将自动设置好一切 Web App 开发所需环境,可以使你只专注于你擅长的设计工作。当开发者配置好了 Vagrant, 你无需担心如何使你的 App 能够在新的环境中运行起来,也不用再麻烦开发人员为你配置开发环境,你只需要输入命令 'vagrant up' 便可开始设计工作。

	For Everyone - 对于任何人
		Vagrant 是为所有人设计的,作为创建虚拟化环境的最简单、最快捷的方式。

Vagrant vs. Other Software - Vagrant VS 其他软件对比
	Vagrant 并不是管理虚拟机和开发环境的唯一工具。本节将 Vagrant 和其他软件进行比较。

	由于比较的偏见,我们尝试只使用事实进行比较。如果在比较中发现某些内容无效,或已过时,请创建一个 issue,我们将会尽快解决。

	Vagrant vs. CLI Tools
		VirtualBox 和 VMware 等虚拟化软件附带了命令行实用程序,用于管理其平台上,添加的虚拟机的生命周期。许多人利用这些工具来编写他们自己的自动化程序。Vagrant 实际上在内部使用了许多这些实用程序。

		这些命令行工具和 Vagrant 之间的区别在于:Vagrant 以多种方式构建在这些应用程序之上,同时仍提供一致的工作流程。Vagrant 支持多种同步目录类型,多 provisioners 来设置机器,自动化 SSH 设置,在你的开发环境中创建 HTTP 隧道等等。所有这些都可以使用单个简单的配置文件。

		即使你忽略了 Vagrant 提供的所有高级功能,Vagrant 仍然比手动脚本有很多改进的地方。虚拟化软件提供的命令行实用程序,经常会随着版本更改,或工作中有细微 bug。Vagrant 会自动检测版本,使用正确的标志,并且可以解决已知问题。因此,如果你使用的是 VirtualBox 的一个版本,而同事使用的是另一个版本,Vagrant 仍然会一直工作。

		对于不经常更改的高度特定的工作流程,维护自定义脚本仍然有益。Vagrant 的目标是构建开发环境,但是一些高级用户仍然可以使用底层的命令行工具,来执行其他手动操作。

	Vagrant vs. Docker
		Vagrant 是一个专注于提供一个跨操作系统的一致的开发环境工作流。Docker 是一个可以持续运行软件的容器管理系统,只要 containerization 系统存在。

		容器通常比虚拟机更轻量,所以启动和停止容器非常快。大多数常见的开发机器都没有内置的 containerization 系统,并且 Docker 使用一个安装了 Linux 的虚拟机来提供这种功能。

		目前,Docker 缺乏对某些操作系统的支持(例如:BSD)。如果你的目标部署是这些操作系统之一,Docker 将不会像 Vagrant 这样的工具提供相同的生产平价(production parity)。Vagrant 也将允许你在 Mac 或 Linux 上运行 Windows 开发环境。

		对于微服务环境,Docker 可能更具吸引力,因为你可以轻松启动单个 Docker VM,并且可以很快启动多个上面的容器。对于 Docker 来说,这是一个很好的用例。Vagrant 可以使用 Docker provider 来做到这一点。Vagrant 的主要优势是一致的工作流程,但在许多情况下,纯 Docker 工作流确实有意义。

		Vagrant 和 Docker 都有一个由社区贡献的可供选择的 'images-镜像' 和 'boxes-盒子' 的大型库。

	Vagrant vs. Terraform
		Vagrant 和 Terraform 都是来自 'HashiCorp' 公司的项目。Vagrant 是一款专注于管理开发环境的工具,而 Terraform 是一款构建基础架构的工具。

		Terraform 可以描述存在于本地或远程机器上的复杂基础架构集合。它聚焦于,随着时间推移,架构和改变基础架构。虚拟机生命周期的最小方面,可以在 Terraform 中复制(reproduce),有时会导致与 Vagrant 混淆。

		Vagrant 提供了许多 Terraform 不具备的更高级功能。同步文件夹,自动化网络,HTTP 隧道,以及更多由 Vagrant 提供的的功能,用于简化开发环境的使用。由于 Terraform 专注于基础架构管理,而非开发环境,因此这些功能(上面提到的 Vagrant 功能)超出了该项目(指 Terraform)的范围。

		Terraform 的主要用途是用于管理 '像 AWS 这样的云提供商' 的远程资源。Terraform 的设计是为了能够管理跨越多个云提供商的超大型基础架构。Vagrant 的设计主要是用于本地开发环境,这些开发环境最多只使用少数虚拟机。

		Vagrant 适用于开发环境。Terraform 适用于更普遍的基础设施管理。

Getting Started - 开始
	Vagrant 入门指南将引导你完成第一个 Vagrant 项目,并展示 Vagrant 所提供的主要功能的基础知识。

	如果你对 Vagrant 提供了哪些内容感到好奇,你也应该阅读 'Why Vagrant'。

	入门指南将 Vagrant 与 VirtualBox 一起使用,因为它是免费的,在每个主要平台上可用,而且 Vagrant 内置对 VirtualBox 的支持。阅读了本指南后,不要忘记 Vagrant 可以和许多其他的 providers 一起使用。

	在深入你的第一个项目之前,请先安装最新版本的 Vagrant。而且由于我们将使用 VirtualBox 作为入门指南的 provider,也请安装它。

	更多书籍:如果你更喜欢阅读实体书,你可能会对 'Vagrant: Up and Running' 感兴趣,由Vagrant的作者编写并由O'Reilly出版。

	Up and Running - 启动和运行

		vagrant init hashicorp/precise64
		vagrant up

		运行了上述2个命令后,你将在 VirtualBox 中有一个完全运行着 'Ubuntu 12.04 LTS 64-bit' 系统的虚拟机。你可以使用 'vagrant ssh' SSH 登录到虚拟机上,当你体验完成后,可以使用 'vagrant destroy' 终止虚拟机。 

		现在,想象一下,你曾经工作的每个项目都可以变得很容易设置。借助 Vagrant,你只需要运行 'vagrant up',就可以工作在任何项目上,安装项目所需要的每个依赖,设置任意网络或同步文件夹,以便你可以在你自己机器上继续工作。

		本指南的其余部分,将引导你设置一个更完整的项目,涵盖 Vagrant 的更多功能。

	Install Vagrant - 安装 Vagrant
		首先必须在机器上安装 Vagrant。Vagrant 为所有支持的平台和体系,分发二进制包(https://www.vagrantup.com/downloads.html)。源码包的安装参考文档。

		Installing Vagrant - 安装 Vagrant
			要安装 Vagrant,首先寻找系统核实的软件包,并下载。Vagrant 被打包为特定操作系统包。为你的系统运行安装程序。安装程序将自动将 'vagrant' 添加到你的系统环境变量中,以便在终端可以访问。如果找不到,请尝试退出,并重新登录到系统(对于 Windows 系统,该操作有时是必要的)。

		Verifying the Installation - 验证 Vagrant
			安装 Vagrant 后,验证 Vagrant 是否有效:

				vagrant 
				...

		Caveats - 警告
			当心系统包管理器。一些操作系统发行版,在它们的上游软件包仓库中,包含 Vagrant 包。请不要以这种方式安装 Vagrant。通常这些包缺少依赖,或者包含非常过时的 Vagrant 版本。如果你想通过系统的包管理器来安装 Vagrant,很可能会遇到问题。请使用下载页面的官方安装程序。

	Project Setup - 项目设置
		配置任意 Vagrant 项目的第一步是创建一个 Vagrantfile。Vagrantfile 的目的是双重的:

			1.标记项目根目录。Vagrant 中的选多配置选项都都相对根目录的。
			2.描述你的项目中所需的虚拟机类型及资源,需要安装哪些软件,以及想要如何访问它。

		Vagrant 有一个内置的命令来初始化一个目录,用于 Vagrant:vagrant init。为了本入门指南的目的,请在你的终端中,进行下列操作:

			mkdir vagrant_getting_started
			cd vagrant_getting_started
			vagrant init

		上面这些命令,会在你的当前目录中创建一个 Vagrantfile。如果你愿意,你可以查看一下 Vagrantfile,里面包含了一些注释和示例。不要对配置文件中的内容感到恐惧,稍后我们将对它进行修改。

		你也可以在已存在的目录中运行 'vagrant init',了,来为现有的项目,设置 Vagrant。

		如果你在项目中使用了版本控制,Vagrantfile 配置文件肯定是需要添加到版本控制中的。这样一来,项目中的每个人都可以无需进行前期配置工作,即可直接使用该项目。

	Boxes - 盒子
		从头开始创建一个虚拟机,是一个漫长而乏味的过程,取而代之的是,Vagrant 使用一个基础镜像包来快速克隆虚拟机。这些基础镜像包在 Vagrant 中被称为 boxes,在创建 Vagrantfile 文件后的第一件事情就是,指定 Vagrant 环境使用哪一个 Box。

		安装 Box
			如果你在 '入门指引' 页已经运行了命令,那么你之前已经安装了一个 box,就不需要再次运行下面的命令。但是,仍然值得阅读本节,来了解关于如何管理 boxes 的更多信息。

			使用 'vagrant box add' 命令,将 boxes 添加到 Vagrant。此命令会将指定的 box 存储到指定的名称下,以便多 Vagrant 环境可以重用它。如果你还没有添加 box,你现在可以这样做:

				vagrant box add hashicorp/precise64

			这将从 'HashipCorp's Vagrant Cloud box catalog' 下载名为 'hashipcorp/precise64' 的 box,我们可以在这个页面上查找和host boxes。虽然从 'HashiCorp's Vagrant Cloud' 下载 boxes 很简单,但是你也可以通过本地文件、自定义URL等方式来添加 boxes。

			Boxes 会被全局存储(为当前用户)。每个项目使用一个 box 作为初始镜像来克隆,并且不会修改实际的基础镜像。这意味着,如果你有2个项目都要使用我们刚刚添加的 'hashipcorp/precise64' box,在一个客户机器上添加文件,并不会影响到另一台机器。

			在上面的命令中,你会注意到这些 boxes 是具有命名空间的。Boxes 分为2部分 - username 和 box name - 用 '/' 分隔。在上面的示例中,username 是 'hashipcorp',box name 是 'precise64'。你也可以通过 URLs 或本地文件路径来指定 boxes,但是本入门指南不会涉及这些内容。

			命名空间不保证 '规范boxes'。一个常见的误解是:像 "Ubuntu" 这样的命名空间,代表了 Ubuntu boxes 的规范空间。这是不真实的。Vagrant Cloud 上的命名空间的行为与 GitHub 上的命名空间非常相似。正如 GitHub 的支持团队无法协助解决某人仓库的问题,HashiCorp 的支持团队,也无法协助第三方发布的 boxes。(就是我们不能根据命名空间,来判断 box 的内容)

		使用 Box
			现在,我们已经将 box 添加到了 Vagrant 中,我们需要对我们的项目进行配置,才能将这个项目作为我们今后的基础环境。打开 Vagrantfile 文件,对其内容依照以下进行编辑:

				Vagrant.configure("2") do |config|
				 	config.vm.box = "hashicorp/precise64"
				end

			本示例中的 'hashicorp/precise32' 必须和你上面添加进去的 box 名称相同。Vagrant 是根据这个名字去判断进行哪种操作的。如果之前没有添加过该 box,Vagrant 会自动下载该 box,并当运行时添加该 box。

			例如,你可以通过指定 'config.vm.box_version' 来给 box 显式指定版本:

				Vagrant.configure("2") do |config|
				  	config.vm.box = "hashicorp/precise64"
				  	config.vm.box_version = "1.1.0"
				end

			你也可以直接使用 'config.vm.box_url' 来给 box 指定URL:

				Vagrant.configure("2") do |config|
				  	config.vm.box = "hashicorp/precise64"
				  	config.vm.box_url = "http://files.vagrantup.com/precise64.box"
				end

			在下一节,我们将调出 Vagrant 环境,并与其进行一点交互。

		Finding More Boxes - 查找更多 Boxes
			对于本指南的其余部分,我们将仅使用之前添加的 'hashicorp/precise64' box。但是在完成入门指南后不久,你可能想的第一个问题是 '我再哪里可以找到更多的 boxes?'。

			查找更多 boxes 的最好的地方是 'HashiCorp's Vagrant Cloud box catalog'。HashiCorp's Vagrant Cloud 有一个免费可用的、适用于各种平台的 boxes 的公共目录。HashiCorp's Vagrant Cloud 也有一个非常好的搜索功能,允可以让你找到你关系的 box。

			除了寻找免费的 boxes,HashiCorp's Vagrant Cloud 允许你托管(host)你自己的 boxes,以及私人 boxes,如果你打算为你自己的组织创建 boxes。

	Up And SSH - 启用并使用 SSH 登录
		现在是时候启动你的第一个 Vagrant 环境了。在你的终端上运行以下命令:

			vagrant up

		在1分钟以内,该命令会执行完毕,你将拥有一台运行 Ubuntu 的虚拟机。由于 Vagrant 在运行时没有 UI 界面,所以你无法真实地看到任何变化。为了证明虚拟机正在运行,你可以通过 SSH 登录到虚拟机中:

			vagrant ssh

		该命令会让你进入一个完整的 SSH 会话。你可以继续与虚拟机进行交互,然后进行任何你想做的操作。虽然这个环境可能是临时的,但轻易不要执行 'rm -rf /' 命令,因为 Vagrant 共享了一个 '/vagrant' 目录,这个目录同宿主机上 Vagrantfile 文件所在的目录是共享关系的,如果执行该命令,将删除所有这些文件。共享文件夹将在下一节介绍。

		花点时间思考刚刚发生了什么:只需要一行配置和终端上的一个命令,我们就可以拥有一个功能齐全的、可 SSH 登录的虚拟机。非常酷!可以使用 'Ctrl + D' 来终止 SSH 会话。

			vagrant@precise64:~$ logout
			Connection to 127.0.0.1 closed.

		当你摆弄完了虚拟机,不想再使用了,在宿主机上运行 'vagrant destroy',Vagrant 将终止虚拟机所使用的任何资源。

		'vagrant destroy' 命令实际上并不删除下载的 box 文件。要彻底删除 box 文件,可以使用 'vagrant box remove' 命令。

	Synced Folders - 同步文件夹
		轻轻松松就能创建拥有一台虚拟是一件很酷的事情,但是并不是所有人都喜欢使用 SSH 登录到虚拟机,在终端界面下进行文件的编辑工作。 幸运的是,Vagrant 可以让你不必这么做,使用同步目录,Vagrant 会自动在宿主机和虚拟机间同步目录。

		默认情况下,Vagrant 共享你的项目路径(记住,该目录是 Vagrantfile 所在目录)到虚拟机的 '/vagrant' 目录中。

		注意,当你使用 'vagrant ssh' 登录到你的虚拟机中,你位于 '/home/vagrant' 目录。'/home/vagrant' 与同步的 '/vagrant' 目录是不同的目录。

		如果你的终端显示了一个有关 'incompatible guest additions'(or no guest addtions) 错误,你可能需要更新你的 box 或 选择一个不同的 box,例如:'hashicorp/precise64'。一些用户使用了 'vagrant-vbguest' 插件,可能也成功解决了这个问题,但该插件并未被 Vagrant 核心团队官方支持。

		再次运行 'vagrant up',然后 SSH 登录到你的虚拟机查看:

			vagrant up
			...
			vagrant ssh
			...
			vagrant@precise64:~$ ls /vagrant
			Vagrantfile

		无论你是否相信,你在虚拟机中看到的 Vagrantfile,实际上,与在你宿主机上的 Vagrantfile 文件是一样的。继续,创建一个文件来证实:

			vagrant@precise64:~$ touch /vagrant/foo
			vagrant@precise64:~$ exit
			$ ls
			foo Vagrantfile

		哇! 'foo' 文件现在已经在你宿主机的 Vagrantfile 所在目录下出现了!正如你所看到的,Vagrant 保持了虚拟机与宿主机间目录的同步。

		借助同步文件夹,你可以继续在宿主机上使用你惯用的编辑器进行开发,文件则会自动同步至虚拟机中。

	Provisioning - 配置
		目前,我们拥有一台运行着 Ubuntu 系统的虚拟机,我们可以在宿主机上编辑文件,它们将会自动同步到虚拟机中。现在,让我们使用 web服务器来服务这些文件。

		我们可以 SSH 登录到虚拟机中,安装一个 web服务器并开始工作,但是之后每个使用 Vagrant 的人都必须做同样的事情。相反,Vagrant 内置了对 '自动配置' 的支持。使用这个功能,当你运行 'vagrant up' 时,Vagrant 将自动安装软件,以便客户机可以重复创建并可立即使用。

		Installing Apache - 安装 Apache
			我们将为我们的基础项目设置 Apache,并且我们将使用 shell 脚本来完成它。复制下面的内容,创建一个 shell 脚本,命名为 'bootstrap.sh',并保存在与 'Vagrantfile' 相同的目录中:

				#!/usr/bin/env bash

				apt-get update
				apt-get install -y apache2
				if ! [ -L /var/www ]; then
				  	rm -rf /var/www
				  	ln -fs /vagrant /var/www
				fi

			接下来,我们将 Vagrant 配置为,当设置我们的机器时,运行上面的 shell 脚本。我们通过编辑 Vagrantfile 文件来实现:

				Vagrant.configure("2") do |config|
				  	config.vm.box = "hashicorp/precise64"
				  	config.vm.provision :shell, path: "bootstrap.sh"
				end

			'provision' 行是新增的,告诉 Vagrant 使用 shell provisioner 执行 'bootstrap.sh' 脚本文件,来设置机器。Shell 脚本文件路径相对于项目根目录(Vagrantfile 所在目录)。

		Provision! - 配置!
			所有配置完成后,只需运行 'vagrant up' 来创建你的机器,Vagrant 将自动配置它。你应该在终端上,看到 shell 脚本的输出。如果客户机已经从上一步开始运行,运行 'vagrant reload --provision',这将快速重启你的虚拟机,跳过初始导入的步骤。上面 'vagrant reload' 命令中的 '--provision' 标志,告知 Vagrant 来运行 provisioners,因为通常 Vagrant 只有在首次运行 'vagrant up' 时,才会运行 provisioners。

			Vagrant 运行完成后,web服务器将启用并运行。你不能从你自己的浏览器中查看网址(目前还不行),但是,你可以通过 SSH 登录到虚拟机中,加载一个文件,来验证配置生效(provisioning works):

				vagrant ssh
				...
				vagrant@precise64:~$ wget -q0- 127.0.0.1

			这是有效的,因为在上面的 shell 脚本中,我们安装了 Apache,并设置了 Apache 的默认 'DocumentRoot' 指向到我们的 '/vagrant' 目录,这是 Vagrant 设置的默认同步文件夹。

			你可以通过创建更多文件,并在终端查看它们来进行更多演示,但是下一步,我们将介绍网络选项,以便你可以使用你自己的浏览器来访问客户机。

			对于复杂的配置脚本,将一些预先安装的软件包打包为一个 Vagrant box 可能更加有效,而非每次构建它们(我们上面其实就是构建,如果可以的话,我们应该直接将 Apache 软件直接打包到 box 里)。本入门指南并不涵盖该主题,但是你可以在 'packaging custom boxes' 文件找到该主题。

	Networking - 网络
		现在,我们已经启动和运行了一个 web服务器,可以修改我们主机上的文件,并将它们自动同步到客户机。然而,仅仅从虚拟机内部终端来访问网页并不令人满意。在这一步中,我们将使用 Vagrant 的网络功能,为我们提供其它选择,让我们可以从宿主机上访问虚拟机。

		Port Forwarding - 端口转发
			一种选择是使用 '端口转发'。端口转发允许你指定客户机上的端口,通过宿主机上的端口来共享。这使你可以访问你自己机器上的端口,但实际上,将所有的网络流量转发到客户机的特定端口。

			让我们设置一个转发端口,以便我们可以我们的客户机上访问 Apache。简单编辑 Vagrantfile 文件:

				Vagrant.configure("2") do |config|
				  	config.vm.box = "hashicorp/precise64"
				  	config.vm.provision :shell, path: "bootstrap.sh"
				  	config.vm.network :forwarded_port, guest: 80, host: 4567
				end

			运行 'vagrant reload' 或 'vagrant up'(运行哪个命令,取决于当前虚拟机是否已经运行),让这些修改生效。

			一旦虚拟机再次运行,在你的浏览器中加载 'http://127.0.0.1:4567'。你应该可以看到一个 '由 Vagrant 自动设置的虚拟机' 提供的网页。

		Other Networking - 其他网络
			Vagrant 也具有其他形式的网络,允许你为客户机分配 静态IP地址,或者将客户机桥接到现有网络。如果你对其他选项感兴趣,可以查看 'networking' 页面。

	Share - 共享
		现在我们已经启动并运行了一台web服务器,并且可以从你的机器上访问,我们拥有一个相当实用的开发环境。但除了提供开发环境外,Vagrant 也使得 '在这些环境中共享和协作' 变得简单。在 Vagrant 中,实现此目的的主要功能被称为 'Vagrant Share'。

		通过互联网连接,Vagrant Share 可让你,将你的 Vagrant 环境分享给全球任何人。'Vagrant Share' 会为你提供一个 URL,该 URL 会将 '连接在互联网上的世界上的任何设备' 直接路由到你的 Vagrant 环境。

		运行 'vagrant share',会将你当前的 Vagrant 环境,生成一个可使用的 'HTTP URL',其他用户可访问到:

			vagrant share
			...
			==> default: Creating Vagrant Share session...
			==> default: HTTP URL: http://b1fb1f3f.ngrok.io
			...

		你的 URL 会有所不同,所以不要尝试上面的 URL。相反,复制你的 'vagrant share' 输出的 URL,并在web浏览器中访问。它应该加载我们更早时候设置的 Apache 页面。

		如果你修改共享文件夹的文件,并刷新 URL,你会发现页面也更新了!该 URL 直接路由到你的 Vagrant 环境,可以在 '连接在互联网上的世界上的任何设备' 运行。

		要结束共享会话,在终端按 'Ctrl+C'。你可以再次刷新 URL 以验证您的环境不再被共享。

		Vagrant Share 比简单的 HTTP 共享功能强大的多。查看 'complete Vagrant Share documentation' 获取更多信息。

		Vagrant Share 并不是设计用来服务生产环境的访问!请不要在 '开发环境' 和 'Q/A环境' 以外的其他环境,依赖 Vagrant共享。Vagrant共享 服务并不是设计用于生产环境的访问。

	Teardown - 拆除
		现在我们有一个功能齐全的虚拟机,可以用来基本的web开发。但是现在让我们说,是时候换挡了,也许在另一个项目上工作,也许出去吃午饭,或者也许是时候回家了。我们如何清除我们的开发环境?

		使用 Vagrant,你可以 suspend(暂停)、halt(关闭) 或 destroy(销毁) 客户机。每个选择都有优点和缺点。选择最适合你的方法。

		Suspending - 暂停
			通过调用 'vagrant suspend' 暂停虚拟机,将保存迅疾的当前运行状态,并且停止它。当你准备好再次开始工作,只需要运行 'vagrant up',它会从你离开的地方恢复。这种方法的主要优点是,超级快,通常只花费 5-10s 来停止和开始你的工作。缺点是,虚拟机仍然占据磁盘空间,并且需要更多磁盘空间,来将虚拟机 RAM 的所有状态存储到磁盘上。

		Halting - 关闭
			通过调用 'vagrant halt' 来关闭虚拟机,将友好地关闭客户操作系统,以及关闭客户机。当你准备好再次启动它,可以运行 'vagrant up'。这种方法的优点是,它可以干净地关闭你的机器,保存磁盘的内容,并允许它再次干净地启动。缺点是,需要花费额外的时间,从冷启动中启动机器,并且客户机仍然占用磁盘空间。

		Destroying - 销毁
			通过调用 'vagrant destroy' 来销毁虚拟机,将从你的系统中,删除客户机的所有痕迹。它将停止客户机,关闭它,并删除客户机所有的硬盘。当你准备好再次工作,只需要运行 'vagrant up'。优点是,你的机器上不会留下任何残留物。客户机消耗的磁盘空间和 RAM 被回收,并且保持宿主机清洁。缺点是,执行 'vagrant up' 命令来重新工作,因为不得不重新导入机器并重新配置,需要花费额外的时间。

	Rebuild - 重建/复原
		当你准备好回到你的项目时,无论是明天、一周后,或一年后,启动和运行都很容易:

			vagrant up

		就这样!由于 Vagrant 已经全部通过 Vagrantfile 进行配置,你或你的其它同事,只需随时运行 'vagrant up',Vagrant 就会重新创建您的工作环境。

	Providers - 提供者
		在本入门指南中,我们的项目始终使用的是 VirtualBox 后端。但是 Vagrant 可以与各种各样的后端 providers 合作,例如:VMWare、AWS等。阅读每个 provider 的页面以获取关于如何设置它们的更多信息。

		一旦你安装了一个 provider,你不需要对 Vagrantfile 进行任何修改,只需要调用 'vagrant up + 合适的provider',Vagrant 将会完成剩下的工作:

			vagrant up --provider=vmware_fusion

		准备将其移动到云端?使用 AWS:

			vagrant up --provider=aws

		一旦你使用另一个 provider 来运行 'vagrant up',每一个其他的 Vagrant 命令,都不需要被告知使用哪个 provider。Vagrant 可以自动了解到。因为当你准备好 SSH、或销毁、或其它操作,只需要像平常那样运行命令,例如:vagrant destroy。不需要额外的参数。

		查看 'providers' 文档,获取关于 providers 的更多信息。

猜你喜欢

转载自blog.csdn.net/beyond__devil/article/details/79400863
今日推荐