起因:

阿里云新扩容一批机器,要对上面的flume配置做修改

之前的inventory是这样子的

[user@vip10-ali-tj-console host_vars]$ sdiff vip10-ali-tj-mm10.yml vip10-ali-tj-mm11.yml
--- ---
hostname: vip10-ali-tj-mm10 | hostname: vip10-ali-tj-mm11
monit_ipaddr: "{{ hostname }}" monit_ipaddr: "{{ hostname }}"
machineid: 590 | machineid: 591
platformname: vip10 platformname: vip10
mm_version: 16.09.1 mm: 16.09.1
lvm_create: lvm_create:
- vg: "data" - vg: "data"
pv: "/dev/vdb" pv: "/dev/vdb"
lv: "apps" lv: "apps"
mount_point: "/data" mount_point: "/data"
[user@vip10-ali-tj-console host_vars]$ cat ../vip10.yml |grep mm
[mm]
vip10-ali-tj-mm10:22
vip10-ali-tj-mm11:22  

对上面做一下说明

定义了一个主机组叫mm,这个组下面有两台机器

上面的host_vars分别对每台机器做了配置,其实可以看到配置大部分都相同, 我用sdiff都列出来了,就两个地方不同

所以就要思考了,我要是扩容100台机器,难不成我要生成100个文件...

下面是经过改良过的

在host_vars中用一个模板文件代替每个主机一份配置的方法

[user@vip10-ali-tj-console host_vars]$ cat mm.yml
---
hostname: {{ inventory_hostname }}
monit_ipaddr: "{{ hostname }}"
machineid: {{ hostvars[inventory_hostname].machineid }}
platformname: vip10
mm_version: 16.08.6
lvm_create:
- vg: "data"
pv: "/dev/vdb"
lv: "apps"
mount_point: "/data"  

在主机定义文件中设置主机的个性化参数

[user@vip10-ali-tj-console host_vars]$ cat ../vip10.yml |grep mm
[mm]
vip10-ali-tj-mm-10:22 machineid=580
vip10-ali-tj-mm-11:22 machineid=581  

然后就可以愉快的测试了,先跑一台看看效果

ansible-playbook -i inventory/vip10/vip10.yml playbooks/vip10/flume/mm.yml --limit vip10-ali-tj-mm-10

Done.  

记一次优化ansible inventory的小例子的更多相关文章

  1. Vuex2.0边学边记+两个小例子

    最近在研究Vuex2.0,搞了好几天终于有点头绪了. 首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各 ...

  2. 001_记一次ansible api二次开发遇到的小问题

    在某次关于发布系统的项目中,需要调用ansible来发布任务,其中一段代码是初始化ansible的连接,并传入一个source(目标机器)的值,代码段如下: from .ansible_api imp ...

  3. c#位运算小例子笔记

    关于位运算,网上有挺多好的博客介绍过,我就不多解释了 这里只记录一个小例子,是在理解位运算时候写的,帮助自己加深一下印象,做个笔记mark一下 具体场景 摇骰子游戏 1每个骰子有6个点,1-3为小,4 ...

  4. springmvc入门的第一个小例子

    今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...

  5. java即时通信小例子

    学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...

  6. Runtime的几个小例子(含Demo)

    一.什么是runtime(也就是所谓的“运行时”,因为是在运行时实现的.)           1.runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数);  [runti ...

  7. bootstrap 模态 modal 小例子

    bootstrap 模态 modal  小例子 <html> <head> <meta charset="utf-8" /> <title ...

  8. INI配置文件分析小例子

    随手写个解析INI配置字符串的小例子 带测试 #include <iostream> #include <map> #include <string> #inclu ...

  9. JavaScript小例子:复选框全选

    JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...

随机推荐

  1. 解题报告-Perfect Squares

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  2. equals()方法左右变量的位置

    题:一个变量,一个常量,用equals()方法比较,让咱们,看看到底是常量放前面好啊,还是变量放前面好 ------------------------------------------------ ...

  3. loadrunner--vugen录制脚本提示“无Internet访问。您可能无法录制并执行业务进程”

    1.vugen录制脚本提示如下,为什么会提示这个呢?这个提示忽略会对录制脚本有影响吗?最好应该怎么操作? 惠普技术支持回复: 您可以试试,若点击“Yes”,是否可以继续录制网站?若可以的话,您也确定网 ...

  4. Devexpress VCL Build v2013 vol 13.2.3 发布

    继续修修补补,大过年的,就不吐槽了. What's New in 13.2.3 (VCL Product Line)   New Major Features in 13.2 What's New i ...

  5. join sql图

    SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name   id  name       id   name --  - ...

  6. swoole实现websocket推送

    环境配置:      swoole 1.9.3.centos6.5(虚拟机).PHP7.01   思路:      ①通过server中的collections取出fd      ②写一个admin. ...

  7. Bootstrap导航栏

    导航栏: <div id="menu-nav" class="navbar navbar-default navbar-inverse navbar-fixed-t ...

  8. Activity ViewPager Fragment框架的生命周期

    1.Fragment的生命周期函数 onAttach.onCreate.onCreateView.onViewCreated.onActivityCreated.onStart.onResume.on ...

  9. 13、容器之间的link

      很多时候我们的业务分为前台和后台,例如:"前台的代码需要连接数据库进行数据操作":但是在写代码的时候我们并不知道后台数据库的地址是什么,所以我们可以docker通过固定的名字来 ...

  10. opengl教程推荐

    非常不错的教程! OpenGL教程