Vagrant:开发环境变得简单

Vagrant 是一种可以轻松创建虚拟机的工具。它最初是为与 VirtualBox 一起使用而开发的,但它已扩展为允许与其他虚拟化工具集成。使用 Vagrant,您可以创建一个特定的设置,然后您可以与其他人共享,而无需为他们提供大型虚拟磁盘映像。

我不得不承认,当我第一次听说 Vagrant 时,我并没有“明白”,也不知道为什么我应该使用它。从那时起,我与其他开发人员进行了大量阅读和交谈,现在我想知道没有它我是如何工作的。

在本地开发环境中工作的问题在于,尽管它在大多数情况下都有效,但当您想恢复到以前的项目时,您往往会发现事情有点混乱。许多 Web 应用程序现在开始将更多不同的技术融入到它们的设置中,因此确保您安装了所有正确的服务器(包括正确的版本)可能比实际处理应用程序本身需要更多的工作。

Vagrant 通过允许您创建一个包含相关项目的所有配置的虚拟环境来解决这个问题。此配置还允许您将这些环境传递给从事该项目的其他人,以便他们可以使用完全相同的设置工作,而无需确保他们在本地安装了正确的软件。

安装

Vagrant 很容易安装。只需访问 Vagrant 网站,下载适用于您系统的相关软件包并运行安装程序。安装后,您可以运行带有 --version 标志的 vagrant 命令,以查看是否所有内容都安装正确。

$ vagrant --version
Vagrant 1.4.1

流浪盒子

Vagrant 接受 box 文件作为输入。Box 文件是生成虚拟机的骨架,包含一些最少的配置选项。有很多 Vagrant box 可用,但你需要确保你得到一个与你正在使用的虚拟机供应商兼容的盒子。看看Vagrantbox.es并选择一个你想要使用的盒子。尝试从信誉良好的来源中选择一个,因为许多人添加了来自 Google Drive 和 Dropbox 的 box 文件,这些文件根本没有安全审查。

要使用一个盒子,只需像这样使用“vagrant box add”命令。

vagrant box add [box name] [box file path]

要使用最新版本的 Ubuntu 与 Vagrant 一起使用,您需要下载相关文件,然后您可以执行以下操作。

vagrant box add precise precise-server-cloudimg-amd64-vagrant-disk1.box

安装 Vagrant 会在你的主目录中创建一个 .vagrant.d 目录。添加一个框会在 box 目录中创建一个目录,该目录包含该框所需的所有文件。box 目录可能包含以下一个或多个文件。

  • vmdk:一种详细描述机器的虚拟化标准文件格式。

  • ovf:描述盒子内容的文件。

  • matadata.json:Vagrant 使用这个文件让它知道它有什么样的虚拟机。

  • Vagrantfile:这个文件包含更多关于盒子设置的信息。通常用于设置网络配置。

您可以使用带有 'list' 选项的 'vagrant box' 命令查看系统上可用的框。

vagrant box list

运行流浪者

要使用 vagrant box,你首先需要初始化它。这是通过使用“vagrant init”命令完成的,该命令也可以传递您之前导入的框的名称。

vagrant init [box name]

该目录现在将包含一个 .vagrant 文件,其中包含虚拟机的一些详细信息。还创建了一个 Vagrantfile,其中包含一些默认配置选项。Vagrantfile 作为 Ruby 配置文件保存,因此需要少量 Ruby 语法才能理解和更改它。有很多选项可以调整,但作为一个简单的例子,您可以通过设置“config.vm.network”设置来更改虚拟机的 IP 地址。

config.vm.network :private_network, ip: "192.168.33.10”

您现在可以通过键入“vagrant up”来运行虚拟机。

vagrant up

您将看到 Vagrant 完成导入和运行虚拟机的步骤。完成它的任务后,您将拥有一个可以使用的虚拟机。

使用流浪者

在您的虚拟机运行时,您可以使用“vagrant ssh”命令访问它。这将自动将您登录到您刚刚使用名为“vagrant”的用户启动的虚拟机。

vagrant ssh

这个 ssh 连接是使用 ssh 密钥建立的,该密钥多年来一直是 Vagrant 源代码的一部分。这意味着它本质上是不安全的,如果你的机器上运行着一个虚拟机,它很可能对你网络中的每个人都可用。出于这个原因,您不应该将 vagrant 机器用于生产目的。

关机

要关闭机器,只需使用命令“vagranthalt”,这将优雅地关闭机器。下次运行机器时,您将看到同一台机器处于相同状态。

vagrant halt

您还可以发出命令“vagrant destroy”来关闭和删除机器。这实际上会丢失您在机器上拥有的所有信息和配置。盒子本身并没有丢失,因为它仍然存在于 Vagrant 中,所以下次启动机器时,您将看到盒子包含的默认虚拟机。

vagrant destory

如果您使用 VirtualBox 配置器运行 Vagrant,您可以使用以下命令查看当前正在运行的虚拟机。

VBoxManage list runningvms

NFS 驱动器

使用 Vagrant 启动和运行可能会变得复杂的一件事是将您想要使用的文件放到新的虚拟机上。为了解决这个问题,我们使用 NFS 驱动器,以便服务器上的目录与本地目录链接。下面将一个名为“docroot”的目录(Vagrantfile 的本地目录)与位于“/var/www/docroot”的虚拟机上的一个目录链接起来。

将以下内容放入您的 Vagrantfile 配置文件中,在最终“结束”语句之前的任何位置。

# Set up NFS drive.
nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder "./docroot",
  “/var/www/docroot, 
  id: "vagrant-root",
  :nfs => nfs_setting

使用 NFS 驱动器可以轻松地将源代码放入 docroot 目录并在本地处理它,同时从虚拟机提供它。这也意味着您可以使用源代码控制来跟踪您的文件和 Vagrant 配置,而不必担心每次创建时将源代码拉到虚拟机上。