Vagrant:开发环境变得简单
Vagrant是一种可以轻松创建虚拟机的工具。它最初是为与VirtualBox一起使用而开发的,但它已扩展为允许与其他虚拟化工具集成。使用Vagrant,您可以创建一个特定的设置,然后您可以与其他人共享,而无需为他们提供大型虚拟磁盘映像。
我不得不承认,当我第一次听说Vagrant时,我并没有“明白”,也不知道为什么我应该使用它。从那时起,我与其他开发人员进行了大量阅读和交谈,现在我想知道没有它我是如何工作的。
在本地开发环境中工作的问题在于,尽管它在大多数情况下都有效,但当您想恢复到以前的项目时,您往往会发现事情有点混乱。许多Web应用程序现在开始将更多不同的技术融入到它们的设置中,因此确保您安装了所有正确的服务器(包括正确的版本)可能比实际处理应用程序本身需要更多的工作。
Vagrant通过允许您创建一个包含相关项目的所有配置的虚拟环境来解决这个问题。此配置还允许您将这些环境传递给从事该项目的其他人,以便他们可以使用完全相同的设置工作,而无需确保他们在本地安装了正确的软件。
安装
Vagrant很容易安装。只需访问Vagrant网站,下载适用于您系统的相关软件包并运行安装程序。安装后,您可以运行带有--version标志的vagrant命令,以查看是否所有内容都安装正确。
$ vagrant --version Vagrant 1.4.1
流浪盒子
Vagrant接受box文件作为输入。Box文件是生成虚拟机的骨架,包含一些最少的配置选项。有很多Vagrantbox可用,但你需要确保你得到一个与你正在使用的虚拟机供应商兼容的盒子。看看Vagrantbox.es并选择一个你想要使用的盒子。尝试从信誉良好的来源中选择一个,因为许多人添加了来自GoogleDrive和Dropbox的box文件,这些文件根本没有安全审查。
要使用一个盒子,只需像这样使用“vagrantboxadd”命令。
vagrantboxadd[boxname][boxfilepath]
要使用最新版本的Ubuntu与Vagrant一起使用,您需要下载相关文件,然后您可以执行以下操作。
vagrantboxaddpreciseprecise-server-cloudimg-amd64-vagrant-disk1.box
安装Vagrant会在你的主目录中创建一个.vagrant.d目录。添加一个框会在box目录中创建一个目录,该目录包含该框所需的所有文件。box目录可能包含以下一个或多个文件。
vmdk:一种详细描述机器的虚拟化标准文件格式。
ovf:描述盒子内容的文件。
matadata.json:Vagrant使用这个文件让它知道它有什么样的虚拟机。
Vagrantfile:这个文件包含更多关于盒子设置的信息。通常用于设置网络配置。
您可以使用带有'list'选项的'vagrantbox'命令查看系统上可用的框。
vagrantboxlist
运行流浪者
要使用vagrantbox,你首先需要初始化它。这是通过使用“vagrantinit”命令完成的,该命令也可以传递您之前导入的框的名称。
vagrantinit[boxname]
该目录现在将包含一个.vagrant文件,其中包含虚拟机的一些详细信息。还创建了一个Vagrantfile,其中包含一些默认配置选项。Vagrantfile作为Ruby配置文件保存,因此需要少量Ruby语法才能理解和更改它。有很多选项可以调整,但作为一个简单的例子,您可以通过设置“config.vm.network”设置来更改虚拟机的IP地址。
config.vm.network:private_network,ip:"192.168.33.10”
您现在可以通过键入“vagrantup”来运行虚拟机。
vagrantup
您将看到Vagrant完成导入和运行虚拟机的步骤。完成它的任务后,您将拥有一个可以使用的虚拟机。
使用流浪者
在您的虚拟机运行时,您可以使用“vagrantssh”命令访问它。这将自动将您登录到您刚刚使用名为“vagrant”的用户启动的虚拟机。
vagrantssh
这个ssh连接是使用ssh密钥建立的,该密钥多年来一直是Vagrant源代码的一部分。这意味着它本质上是不安全的,如果你的机器上运行着一个虚拟机,它很可能对你网络中的每个人都可用。出于这个原因,您不应该将vagrant机器用于生产目的。
关机
要关闭机器,只需使用命令“vagranthalt”,这将优雅地关闭机器。下次运行机器时,您将看到同一台机器处于相同状态。
vagranthalt
您还可以发出命令“vagrantdestroy”来关闭和删除机器。这实际上会丢失您在机器上拥有的所有信息和配置。盒子本身并没有丢失,因为它仍然存在于Vagrant中,所以下次启动机器时,您将看到盒子包含的默认虚拟机。
vagrantdestory
如果您使用VirtualBox配置器运行Vagrant,您可以使用以下命令查看当前正在运行的虚拟机。
VBoxManagelistrunningvms
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配置,而不必担心每次创建时将源代码拉到虚拟机上。