使用Vagrant和Ansible

Posted thankzg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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_varsansible.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

 

以上是关于使用Vagrant和Ansible的主要内容,如果未能解决你的问题,请参考以下文章

使用 Vagrant 测试 Ansible 剧本 | Linux 中国

vagrant 上的 Ansible 错误中没有模块名称 Yum

Ansible Galaxy Provisioner 未在 Vagrant 中使用私钥

显示完成每个 vagrant ansible 任务所需的时间

在WINDOWS上通过VAGRANT练习ANSIBLE

python Ansible的Vagrant动态库存脚本