在使用 Ansible 進行預置時,使用 Vagrant 進行 AWS 資源管理有什麼好處?
我了解 Vagrant 是一個創建和管理虛擬機的工具;Ansible是一種配置機器(虛擬機或其他方式)的工具。
然而,Ansible 的 AWS 模組能夠創建和管理 AWS 資源——結合其動態 AWS 清單,這將產生一個完全可移植的管理工具。雖然該
vagrant-aws
外掛還可以創建和管理 AWS 資源,但我是否認為它不能如此輕鬆地管理相同的資源,如此便攜(即新的管理主機可以下載Vagrantfile
但無法管理現有的 AWS 資源)?如果是這樣,使用 Vagrant 管理 AWS 資源(如果已經使用 Ansible 進行預置)與使用 Ansible 進行資源管理和預置相比有什麼優勢(如果有)?
我認為您基本上是正確的-如果您只想管理 EC2 實例-儘管 vagrant 可以輕鬆使用 Ansible 的動態庫存系統:http ://docs.vagrantup.com/v2/provisioning/ansible.html :
靜態庫存
第二個選項適用於您希望更好地控制庫存管理的情況。使用
ansible.inventory_path option
,您可以引用特定的庫存資源(例如靜態庫存文件、動態庫存腳本甚至是儲存在同一目錄中的多個庫存)。Vagrant 然後將使用此庫存資訊而不是生成它。這個選項可能應該被稱為“現有庫存”或“外部庫存”或其他東西 - 它只是意味著“使用 Vagrant 沒有生成的庫存”。
Vagrant 的真正優勢在於能夠在多個環境中使用相同/相似的 Vagrantfile - 使用完全相同的 Ansible 腳本。因此,用於 dev 的 Virtualbox VM 和用於 stage/prod 的 EC2 具有相同的 Ansible 配置腳本 - 以及相同的 vagrantfile 或兩個非常相似的。
那時,您可以通過對 Vagrantfile 中的提供程序進行簡單更改來切換到 Docker - 甚至可以
--provider
在命令行上使用。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。