• 记一次优化ansible inventory的小例子


    起因:

    阿里云新扩容一批机器,要对上面的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.  

  • 相关阅读:
    到底什么级别才算是高并发?
    阿里大佬教你,如何写好 Java 代码!
    Java 13 发布了!
    年轻人的第一个自定义 Spring Boot Starter!
    懵圈了,面试官问一个 TCP 连接可发多少个 HTTP 请求?
    Java 和操作系统交互,你猜会发生什么?
    不用找了,基于 Redis 的分布式锁实战来了!
    中国剩余定理
    欧几里德与扩展欧几里德
    大数mod的技巧
  • 原文地址:https://www.cnblogs.com/txwsqk/p/6843608.html
Copyright © 2020-2023  润新知