使用Vagrant和Ansible

簡介

Vargrant是一個管理虛擬機環境的工具,容許你在不一樣的虛擬化和雲平臺 配置和使用可再生的工做環境.它也集成了Ansible做爲對虛擬機的服務提供者,並且這兩個工具配合的很好.html

這個指南會敘述如何同時配合使用Vagrant和Ansible.ruby

若是你對Vagrant還不瞭解,你應該看看這個文檔 the documentation.bash

假設你已經安裝了Ansible,在Git上檢測,運行的也很好,查看下面的:doc:intro_installation 獲取更多的信息.ssh

配置Vagrant

第一步安裝了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_varsansible.sudo 和 ansible.sudo_user , 和能夠避免SSH對新的虛擬機的鏈接問題的 ansible.host_key_checkingspa

查看 Ansible Provisioner documentation 獲取更多信息vagrant

從新運行一個在已存在的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
相關文章
相關標籤/搜索