![在使用 Ansible 进行配置时,使用 Vagrant 进行 AWS 资源管理有什么好处?](https://linux22.com/image/663969/%E5%9C%A8%E4%BD%BF%E7%94%A8%20Ansible%20%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%E6%97%B6%EF%BC%8C%E4%BD%BF%E7%94%A8%20Vagrant%20%E8%BF%9B%E8%A1%8C%20AWS%20%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E6%9C%89%E4%BB%80%E4%B9%88%E5%A5%BD%E5%A4%84%EF%BC%9F.png)
我理解 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。