使用 Vagrant 和 Ansible 部署用于 Web 开发的虚拟机

还没有读者喜欢这篇文章。
HTML code

Jason Baker,为 Opensource.com 拍摄。 

VagrantAnsible 是高效配置虚拟机的工具,虚拟机也称为 VM,或者在 Vagrant 术语中,经常使用“boxes”这个词。我们首先简要讨论一下为什么 Web 开发人员会投入时间使用这些工具,然后介绍所需的软件、Vagrant 如何与虚拟机提供商协同工作的概述,以及使用 Ansible 配置虚拟机。

背景

首先,本文建立在我们关于在虚拟机中安装和测试 eZ Publish 5的指南之上,这可能是一个有用的参考。我们将介绍您可以用来自动化创建和配置虚拟机的工具。除了我们在这里讨论的内容之外,还有很多内容需要涵盖,但现在我们将重点提供一个总体概述。

为什么你应该使用虚拟机进行网站开发?

开发人员进行网站开发的传统方式是在远程开发机器上或本地直接在其主操作系统上进行。使用虚拟机进行开发有很多优点,包括以下几点:

  • 整个开发团队可以使用相同的服务器和配置,而无需购买额外的硬件。
  • 本地虚拟机可以更好地代表生产服务器。
  • 您可以在需要使用虚拟机时启动它,并在完成后关闭它。如果您需要不同版本的软件,例如不同项目需要不同版本的 PHP,这将特别有用。

Vagrant 和 Ansible 帮助自动化虚拟机的配置。Vagrant 处理机器的启动和停止以及一些配置,而 Ansible 将机器的细节分解为易于阅读的配置文件,并在虚拟机中安装和配置软件。

一般方法

我们通常将站点代码保留在主机操作系统上,并将这些文件从主机操作系统共享到虚拟机。这样,虚拟机可以仅加载运行站点所需的软件,并且每个团队成员都可以在他们最常使用的操作系统下使用他们喜欢的本地工具进行代码编辑、版本控制等。

风险

这个方案并非没有风险和复杂性。虚拟机是您工具箱中的一个很棒的工具,但像任何工具一样,您需要花一些时间学习如何使用它。

  • 当 Vagrant、Ansible 和 VirtualBox 或其他虚拟机提供商 一起良好运行时,它们有助于更高效地进行开发并提高您的工作质量。但是,当出现问题时,它们可能会分散实际的 Web 开发注意力。它们代表您需要维护和排除故障的其他工具,并且您需要培训和支持您的开发团队以正确使用它们。
  • 主机操作系统:确保您的主机操作系统 支持您计划使用的工具。正如我所提到的,这篇博文重点介绍 Ansible。Ansible 在 Windows 上作为主机未获得官方支持。这意味着如果您只有一台 Windows 机器可以使用,您需要考虑使用 Linux 作为控制器。(有一些技巧可以在 Windows 上使其工作。)
  • 性能:请记住,这些虚拟机的目的是支持开发。它们的运行速度不会像独立服务器那样快。如果这是一个问题,您可能需要投入一些时间来提高性能。
  • 一个隐含的假设是,在任何给定时间,主机上只会运行一个虚拟机实例。如果您将使用多个虚拟机实例,则需要在设置时考虑到这一点。

入门

第一步是安装所需的软件:VagrantAnsibleVirtualBox。在这篇文章中,我们将只关注 VirtualBox,但您也可以使用不同的 provider,包括许多开源选项。您可能还需要一些 VirtualBox 扩展和 Vagrant 插件。花时间仔细阅读文档。

然后,您将需要虚拟服务器的起点,通常称为“base box”。 对于您的第一个虚拟机,最简单的方法是使用现有的 box。在 HashiCorp's AtlasVagrantbox.es 上有许多适合测试的 box,但请确保您为任何用于生产的 box 使用受信任的提供商。

一旦您选择了您的 box,这些命令应该可以使其生效

$ vagrant box add name-of-box url-of-box
$ vagrant init name-of-box
$ vagrant up

配置、自定义和访问虚拟机

一旦 box 启动并运行,您就可以开始使用 Ansible 向其添加软件。计划花大量时间学习 Ansible。这是非常值得的投资。您将使用 Ansible 加载系统软件、创建数据库、配置服务器、创建用户、设置文件所有权和权限、设置服务等等——基本上,配置虚拟机以包含您需要的一切。一旦您设置了 Ansible 脚本,您就可以将它们与不同的虚拟机重新使用,也可以针对远程服务器运行它们(这是另一天的主题!)。

SSH 进入 box 最简单的方法是

$ vagrant ssh

您可以更新您的 /etc/hosts 文件,将虚拟机 box IP 地址映射到一个易于记忆的名称,以便进行 SSH 和浏览器访问。一旦 box 运行并提供页面,您就可以开始处理站点。

开发工作流程

使用此处描述的虚拟机并不会显着改变编辑代码时的正常开发工作流程。主机和虚拟机通过 Vagrant 下配置的路径共享应用程序文件。您可以使用主机上您选择的代码编辑器编辑文件,或者使用虚拟机上的文本编辑器进行小的调整。您还可以将版本控制工具保留在主机上。换句话说,在主机上所做的所有代码修改都会自动显示在虚拟机上。

您只需享受本地开发的便利,以及一个模拟代码将被部署到的服务器的环境!

本文最初发表于 Mugo Web。经许可重新发布。

User profile image.
Betsy 喜欢使用完整的 LAMP 堆栈。她最喜欢的一些工具是 eZ Publish、Vagrant、Ansible、Symfony 和 Dojo。她偶尔会在她的博客上发帖并在 Twitter 上发推文。

1 条评论

感谢您增进我对 Vagrant 和 Ansible 的理解。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.