在使用 Ansible 进行配置时,使用 Vagrant 进行 AWS 资源管理有什么好处?

在使用 Ansible 进行配置时,使用 Vagrant 进行 AWS 资源管理有什么好处?

我理解 Vagrant 是一个创建和管理虚拟机的工具;Ansible是一种配置机器(虚拟或其他机器)的工具。

然而,Ansible 的 AWS 模块能够创建和管理 AWS 资源——结合其动态 AWS 库存,这将产生一个完全可移植的管理工具。而vagrant-aws插件还可以创建和管理 AWS 资源,我认为它不能如此轻松地管理相同的资源是否能够如此便携(即,新的管理主机可以下载Vagrantfile但不能管理现有的 AWS 资源)?

如果是这样,那么使用 Vagrant 来管理 AWS 资源(如果已经在使用 Ansible 进行配置)与使用 Ansible 进行资源管理和配置相比,有什么优势(如果有的话)?

答案1

我认为你基本上是正确的 - 如果你只想管理 EC2 实例 - 尽管 vagrant 可以轻松使用 Ansible 的动态库存系统:http://docs.vagrantup.com/v2/provisioning/ansible.html

静态库存

第二种选择适用于您希望对库存管理有更多控制的情况。使用ansible.inventory_path option,您可以引用特定的库存资源(例如静态库存文件、动态库存脚本甚至存储在同一目录中的多个库存)。然后,Vagrant 将使用此库存信息而不是生成它。

这个选项可能应该被称为“现有库存”或“外部库存”或其他东西 - 它只是意味着“使用 Vagrant 未生成的库存”。

Vagrant 的真正优势在于能够将相同/相似的 Vagrantfiles 用于多个环境 - 使用完全相同的 Ansible 脚本。因此,用于开发的 Virtualbox VM 和用于 stage/prod 的 EC2 具有相同的 Ansible 配置脚本 - 以及相同的 vagrantfile 或两个非常相似的文件。

此时,您可以通过对 Vagrantfile 中的提供程序进行简单更改(甚至--provider在命令行上使用)来切换到 Docker。

Vagrant 实现后端提供程序的方式使切换变得非常简单。

Vagrant 还提供了一个简单的内置命令行界面来管理你的盒子 - 查看状态、停止、启动、重新启动等:

vagrant status
vagrant up <machine>
vagrant destroy -f <machine>

其工作原理相同,无论后端提供商是谁 - Virtualbox、EC2 等...以及用于其他有用东西的大量插件:https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins

但是,它并不完美。这个vagrant-aws插件并没有得到太多的青睐,如果你有复杂的 AWS 需求,你最好自己动手,要么使用脚本 + Ansible,要么单独使用 Ansible。

相关内容