使用Vagrant和Ansible¶
簡介¶
Vargrant是一個管理虛擬機器環境的工具,允許你在不同的虛擬化和雲平臺 配置和使用可再生的工作環境.它也集成了Ansible作為對虛擬機器的服務提供者,而且這兩個工具配合的很好.
這個指南會敘述如何同時配合使用Vagrant和Ansible.
如果你對Vagrant還不瞭解,你應該看看這個文件 the documentation.
假設你已經安裝了Ansible,在Git上檢測,執行的也很好,檢視下面的:doc:intro_installation 獲取更多的資訊.
配置Vagrant¶
第一步安裝了Vagrant之後,建立一個 Vagrantfile
,修改它來適應你的需要.Vagrant文件裡面已經包含了很多細節了,這裡僅僅給出一個快速的參考例項
$ mkdir vagrant-test
$ cd vagrant-test
$ vagrant init precise32 http://files.vagrantup.com/precise32.box
這會建立名稱為 Vagrantfile 的檔案,你可以編輯它適應你的需要.預設的Vagrantfile有很多註釋.這裡是一個簡化的例子包括了一個使用ansible提供服務的部分.
#Vagrant API/syntax 版本.不要修改它除非你知道你自己在做什麼.
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.network :public_network
config.vm.provision "ansible" do |ansible|
ansible.playbook = "playbook.yml"
end
end
Vagrantfile 有很多選項,但這些是最重要的.注意 config.vm.provision``部分,引用了叫做``playbook.yml
的 Ansible playbook,它與Vagrantfile的在同樣的目錄裡面.Vagrant 一旦虛擬機器啟動和已經準備好了ssh訪問的時候.執行這個提供的服務(prvisoner)
$ vagrant up
這將會啟動VM和執行提供的playbook檔案.
在你的Vagrantfile裡面,有許多Ansible選項可以配置.有用的選項有 ansible.extra_vars
, ansible.sudo
和 ansible.sudo_user
, 和可以避免SSH對新的虛擬機器的連線問題的 ansible.host_key_checking
檢視 Ansible Provisioner documentation 獲取更多資訊
重新執行一個在已存在的VM上的playbook,執行
$ vagrant provision
這將會重新執行playbook
手動執行Ansible¶
有時你想手動執行Ansible,而不是機器.這相對來說很簡單.
Vargrant自動的為Vagrant機器建立清單檔案,存在相同的目錄下面 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.它根據Vagrant自動建立的SSH管道配置清單檔案,執行``ansible-playbook`` 使用正確的使用者名稱和SSH金鑰選項來訪問.一個典型的自動建立清單檔案的例子看起來就像下面這樣.
# Generated by Vagrant
machine ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
如果你想執行Ansible手動的,你會想確保是否傳遞給``ansible`` 或者 ansible-playbook
命令正確的參數,和自動生成了清單檔案.
這是一個例子
$ ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --private-key=.vagrant/machines/default/virtualbox/private_key -u vagrant playbook.yml
注意:Vagrant地域1.7.0的版本會使用私鑰位於``~/.vagrant.d/insecure_private_key.``
See also
- Vagrant Home
- The Vagrant homepage with downloads
- Vagrant Documentation
- Vagrant Documentation
- Ansible Provisioner
- The Vagrant documentation for the Ansible provisioner
- Playbooks
- An introduction to playbooks