使用vagrant和ansible

thankzg thankzg     2022-10-11     460

关键词:

简介

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 任务所需的时间

】显示完成每个vagrantansible任务所需的时间【英文标题】:Displaythetimeittakeseachvagrantansibletasktocomplete【发布时间】:2013-11-2008:40:57【问题描述】:我正在将vagrantprovisioner从shell转换为ansible,我想知道是否有任何选项可以显示完成... 查看详情

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

】vagrant上的Ansible错误中没有模块名称Yum【英文标题】:NoModulenameYuminAnsibleErroronvagrant【发布时间】:2017-02-2801:29:09【问题描述】:我正在UbuntuVagrant机器上尝试使用Ansible剧本进行一些实验。我编写了一个名为exampleyum.yml的简单剧... 查看详情

在windows上通过vagrant练习ansible

有点曲折,但没办法,还要通过VAGRANT里的ANSIBLE建DOCKER呢。。VagrantFile#-*-mode:ruby-*-#vi:setft=ruby:Vagrant.configure(2)do|config|config.vm.box="ubuntu/trusty64"if(/cygwin|mswin|mingw|bccwin|wince|emx/=~RUBY_PLATFORM)! 查看详情

如何拥有一个自己的vagrantbox

这是一个关于Vagrant的学习系列,包含如下文章:Vagrant入门创建自己的Vagrantbox用Vagrant搭建Jenkins构建环境用Vagrant和Ansible搭建持续交付平台在上一篇中,我们讲到了Vagrant的基本使用,在本文中我们将尝试创建自己的Vagrantbox。本文... 查看详情

Ansible 服务重启失败

...题。我正在使用截至2015年5月11日的最新软件(Ansible1.9.1/Vagrant1.7.2/VirtualBox4.3.26/主机:OSX10.10.1/访客:ubuntu/trusty64)tl;dr:我调用服 查看详情

大数据集群环境搭建(代码片段)

...简单2.3.三种工具的部署方式3.自动创建虚拟机3.1.什么是Vagrant3.2.安装Vagrant和概念介绍3.3.使用Vagrant构建一个虚拟机集群4.自动化部署服务(了解,运维领域)4.1.痛点和Ansible4 查看详情

如何在不更改 .rb 文件的情况下通过 Vagrantfile 扩展 vagrant 插件?

】如何在不更改.rb文件的情况下通过Vagrantfile扩展vagrant插件?【英文标题】:HowtoextendavagrantpluginthroughVagrantfilewithoutchangingthe.rbfile?【发布时间】:2021-02-2504:59:04【问题描述】:我在Vagrant中有一个场景,我想使用ansible_local插件修... 查看详情

使用vagrant在命令行快速创建虚拟机

一、Vgrant的安装Vagrant是一个跨平台的虚拟机管理工具,我们以Deepin20.2.3为例,安装和使用Vagrant。我们在这里所说的Vagrant包括Vagrant工具本身和虚拟引擎工具VirtualBox。1.安装Vagrant安装vagrant时,使用的VirtualBox版本必须要得到对应Va... 查看详情

vagrant使用国内镜像安装插件和box镜像(代码片段)

dui前言Vagrant是非常优秀的本地虚拟化管理工具。无奈国内访问速度实在感人。本文分享一些如何使用国内镜像加速的经验,让Vagrant的使用更加爽快。插件镜像Vagrant的插件主要托管在RubyGems仓库,在国内几乎无法访问。万... 查看详情

vagrant里面不能运行docker,怎么回事

 以下内容均出自Vagrant作者(MitchellHashimoto)与Docker作者(SolomonHykes)在stackoverflow上面一个问题讨论。在这个问题中,双方阐述了vagrant和docker的特点和使用范围,对于深入理解vagrant和docker很有意义,因此笔者翻译出来,以供大家讨... 查看详情

如何在 vagrant 中使用 ssh-key 和密码?

】如何在vagrant中使用ssh-key和密码?【英文标题】:howtousessh-keyinvagrantwithpassphrase?【发布时间】:2015-11-0522:55:01【问题描述】:我已经为libvirt创建了我的自定义框,并为vagrant生成了ssh-key对,而无需pass-phrase。我在vagrant文件中提... 查看详情

用vagrant创建jenkinsmaster-slave多机环境

  在上一篇文章中,我们讲到了如何创建自己的vagrantbox。本文中,我们将使用Vagrant一次性创建3台虚拟机以组成一个Jenkins的master-slave构建环境,其中包含1台Jenkinsmaster机器,2台slave机器。我们将采用Shell作为provision工具,... 查看详情

使用 Vagrant 和 Puppet/PuPHPet 管理多个 LAMP 环境

】使用Vagrant和Puppet/PuPHPet管理多个LAMP环境【英文标题】:ManagingmultipleLAMPenvironmentswithVagrantandPuppet/PuPHPet【发布时间】:2015-10-3005:13:07【问题描述】:我正在尝试创建具有不同LAMP堆栈版本的多个(半同步)环境,以模拟开发、QA/... 查看详情

确定安装了哪些netframework版本

 以下内容均出自Vagrant作者(MitchellHashimoto)与Docker作者(SolomonHykes)在stackoverflow上面一个问题讨论。在这个问题中,双方阐述了vagrant和docker的特点和使用范围,对于深入理解vagrant和docker很有意义,因此笔者翻译出来,以供大家讨... 查看详情

Vagrant 和 Docker nfs 失败:文件描述符错误

】Vagrant和Dockernfs失败:文件描述符错误【英文标题】:VagrantandDockernfsfailed:Badfiledescriptor【发布时间】:2016-05-1118:00:13【问题描述】:经过大量审查,尝试在Vagrant中使用rsync并以Docker作为提供者。(双向同步)我继续使用nfs在VMbo... 查看详情

vagrant简单使用

使用vagrant,需要安装virtualbox和vagrant。具体怎么安装这里就不介绍。 创建一个虚拟机找到一个初始boxvagrant创建虚拟机需要一个box镜像,box镜像可以在https://app.vagrantup.com/boxes/search中查询。例如我们找到了一个ubuntu16.04的镜像... 查看详情

ansible安装和基本使用

ansible是python开发的一款自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量配置系统、批量部署程序、批量运行命令等功能。ansible是基于模块工作的,本身没有批量操作系统的能力。真... 查看详情

如何让共享文件夹与 Vagrant 和 Hyper-V 一起使用?

】如何让共享文件夹与Vagrant和Hyper-V一起使用?【英文标题】:HowtogetsharedfoldersworkingwithVagrantandHyper-V?【发布时间】:2019-06-1308:04:07【问题描述】:之后:启用MicrosoftHyper-V,如下所述:https://docs.microsoft.com/en-us/virtualization/hyper-v-on... 查看详情