Vargrant是一個管理虛擬機環境的工具,容許你在不一樣的虛擬化和雲平臺 配置和使用可再生的工做環境.它也集成了Ansible做爲對虛擬機的服務提供者,並且這兩個工具配合的很好.html
這個指南會敘述如何同時配合使用Vagrant和Ansible.ruby
若是你對Vagrant還不瞭解,你應該看看這個文檔 the documentation.bash
假設你已經安裝了Ansible,在Git上檢測,運行的也很好,查看下面的:doc:intro_installation 獲取更多的信息.ssh
第一步安裝了Vagrant以後,建立一個 Vagrantfile
,修改它來適應你的須要.Vagrant文檔裏面已經包含了不少細節了,這裏僅僅給出一個快速的參考實例ide
$ 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)ui
$ vagrant up
這將會啓動VM和運行提供的playbook文件.url
在你的Vagrantfile裏面,有許多Ansible選項能夠配置.有用的選項有 ansible.extra_vars
, ansible.sudo
和 ansible.sudo_user
, 和能夠避免SSH對新的虛擬機的鏈接問題的 ansible.host_key_checking
spa
查看 Ansible Provisioner documentation 獲取更多信息vagrant
從新運行一個在已存在的VM上的playbook,運行
$ vagrant provision
這將會從新運行playbook
有時你想手動運行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