什么是 Vagrant?17 Mar 2025 | 5 分钟阅读 Vagrant 是一个工具,用于在单一工作流中构建和管理虚拟机环境。Vagrant 提供了一个简单易用的命令行客户端来管理这些环境,注重自动化,并提供一个解释器来处理描述每个环境外观的文本定义,称为 Vagrantfiles。Vagrant 减少了开发环境的设置时间,并提高了生产环境的兼容性。 Vagrant 是用 Ruby 编写的开源软件,这意味着任何人都可以共享、下载和修改它。 虽然许多虚拟机管理程序都提供了命令行界面,但可以通过 shell 脚本或直接使用这些程序来配置虚拟机。Vagrant 通过添加一个层来提供简单性、跨多个系统的互操作性以及一种更一致的方法,可以与运行在任何其他系统之上的任何虚拟机环境一起使用。 通过提供一个标准的文本格式来处理虚拟机,我们可以用代码定义我们的环境,使其易于共享、修改、管理和通过版本控制进行备份。与其共享一个可能重达数 GB 的整个虚拟机镜像,不如共享一个仅重几 KB 的简单文本文件来更改配置。 历史
为什么选择 Vagrant?Vagrant 易于配置、可重现且便携的工作环境,基于行业标准技术构建,并通过单一一致的工作流进行控制,以最大限度地提高生产力和灵活性。 机器在 AWS、VMware、VirtualBox 或任何其他提供商之上进行配置。Chef、shell 脚本或 Puppet 等行业标准的配置工具可以自动安装和配置虚拟机上的软件。 Vagrant 提供了一个简单且有用的功能,适合处理不同项目的人。 Vagrant 可以轻松为开发人员创建一个本地环境,该环境复制了代码最终将部署的环境。但它必须拥有相同的库、进程、依赖项、操作系统和版本等。 Vagrant 架构Vagrant 使用 Providers 和 Provisioners 作为构建块来管理开发环境。 Provisioners 是允许用户自定义虚拟机环境配置的工具。Chef 和 Puppet 都是 Vagrant 生态系统中应用最广泛的 Provisioners。 Providers 是 Vagrant 用于设置和创建虚拟环境的服务。Docker、Hyper-V 和 VirtualBox 虚拟化支持 Vagrant,而 AWS 和 VMware 通过插件支持。最终用户将执行一个名为 #vagrant up 的命令。 ![]() Vagrant 作为包装器置于虚拟化软件之上,并帮助开发人员轻松地与 Providers 交互。它使用 Chef 或 Puppet 自动化虚拟机环境,用户无需直接使用任何其他虚拟化软件。 机器和软件要求都写在一个名为 Vagrantfile 的文件中,该文件用于执行创建开发就绪 box 所需的步骤。 除了 Vagrantfile 中提到的内容之外,它还包含虚拟机配置、网络设置等详细信息。此外,它还包括多 VM 配置,即我们需要运行不同服务的多个独立虚拟机。 Vagrant 将负责读取当前目录中的 Vagrantfile,然后执行虚拟化操作,并运行配置脚本,使开发环境准备就绪。 box 是 Vagrant 环境的一种格式和扩展(.box),可以复制到另一台机器上以复制相同的环境。 由于所有东西都位于虚拟机中,完成任务后,我们可以执行 #vagrant destroy,这将终止整个环境。这将使基本机器免受我们使用 #vagrant up 创建的环境的影响。 开发人员现在可以检出存储库,然后执行 #vagrant up,而不是直接使用 VirtualBox 或任何其他虚拟化平台来创建机器,然后在其上配置所需的软件。 Vagrant 工作流无论您是开发人员、运维人员还是设计师,Vagrant 都提供相同、简单的开发工作流。它利用声明式配置文件来描述您的所有软件需求、软件包、操作系统配置、用户等。 1. 对于开发人员: Vagrant 将依赖项及其配置隔离在一个可丢弃的、一致的环境中,而不会牺牲我们习惯使用的任何工具(编辑器、浏览器、调试器等)。 一旦开发人员创建了一个 Vagrantfile,他们只需要执行 Vagrant up,所有东西都会被安装并配置好。其他团队成员可以根据相同的配置创建他们的开发环境,因此,无论开发人员是在 Linux、Mac OS X 还是 Windows 上工作,所有团队成员都在相同的环境中运行代码,使用相同方式配置的相同依赖项。 2. 对于运维人员: Vagrant 为运维工程师或DevOps 工程师提供了一个可丢弃的环境和一致的工作流,用于开发和测试基础设施管理脚本。 运维工程师可以快速测试 shell 脚本、Chef cookbook、Puppet 模块等,使用 VirtualBox 或 VMware 等本地虚拟化。工程师还可以使用相同的工作流和配置在 AWS 或 RackSpace 等远程云上测试这些脚本。 Vagrant 有助于摆脱用于回收 EC2 实例的自定义脚本,停止在各种机器之间来回切换 SSH。 3. 对于设计师: Vagrant 将自动设置该 Web 应用程序所需的所有内容,让设计师可以专注于最擅长的事情——设计。一旦开发人员配置好 Vagrant,设计师就不再需要担心让该应用程序运行起来。 下一个主题什么是 VDI |
我们请求您订阅我们的新闻通讯以获取最新更新。