我正在使用 Django 和 PostgreSQL 构建一个多服务器电子商务网站。我将利用 Linode 的多台服务器(应用程序、数据库、静态等)。
目前,我使用自己编写的一组 Bash 脚本来配置服务器。编写这些脚本帮助我了解了所有内容是如何连接在一起的,但现在我的基础设施和堆栈已经变得非常复杂,使用这些脚本变得困难且容易出错。我想改用 Ansible。
如果我要使用 Ansible 来配置我的服务器,我还应该使用 Vagrant 吗?
换句话说,我应该使用 Ansible 来配置我的裸机硬件吗?或者,如果您使用 Ansible,您也应该在 Vagrant VM 上配置您的服务器吗?如果我这样做,在 VM 中而不是在服务器上运行我的网站会对性能造成影响吗?
答案1
虽然 Vagrant 和 Ansible 可以很好地协同工作,但正如您在问题的评论中提到的那样,使用这两种工具中的任何一种都不会要求另一个的使用。Ansible 在没有 Vagrant 和 Vagrant 的情况下也可以完美使用,如文档所述这里,可以使用超过10种其他配置方法,包括其他配置管理系统(chef、puppet、salt)。
Vagrant 和 Ansible 的功能有些重叠。例如,两个项目都可以创建服务器。Ansible 支持许多云服务提供商和虚拟化系统,如文档所述这里。同样,Vagrant 支持一些提供商也一样。
Vagrant 最擅长创建服务器,尤其是(本地)虚拟机。
Ansible 是一种用途更广的工具。如您所知,除了创建服务器之外,您还可以配置和编排它们。您可以使用 Ansible 部署应用程序代码、管理网络设备以及许多其他用例。
采用仅使用 Ansible 的方法的好处是,您的工具集中的依赖项会减少一个……您只需要 Ansible。缺点是,您需要弄清楚为目标平台创建服务器的细微差别。这可能会使您的角色/剧本变得复杂。
使用 Vagrant 进行配置的好处是,它可能更简单创造服务器,无论您使用什么平台来运行它们。
一个非常常见的用例是人们使用 Vagrant 来启动本地开发虚拟机。这允许他们使用相同的 Ansible playbook 来配置/部署开发,质量保证和产品环境。这有助于解决“在我的本地开发环境中运行良好”的常见问题,即本地开发计算机可能具有与 qa 和生产环境不同的配置甚至操作系统。运行虚拟机可让您使用相同的操作系统。