木一 发表于 2018-1-3 10:34:24

记一次优化ansible inventory的小例子

  起因:
  阿里云新扩容一批机器,要对上面的flume配置做修改
  之前的inventory是这样子的
  

$ 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: vip10platformname: vip10
  
mm_version: 16.09.1mm: 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"
  
$ cat ../vip10.yml |grep mm
  

  
vip10-ali-tj-mm10:22
  
vip10-ali-tj-mm11:22  
  

  对上面做一下说明
  定义了一个主机组叫mm,这个组下面有两台机器
  上面的host_vars分别对每台机器做了配置,其实可以看到配置大部分都相同, 我用sdiff都列出来了,就两个地方不同
  所以就要思考了,我要是扩容100台机器,难不成我要生成100个文件...
  下面是经过改良过的
  在host_vars中用一个模板文件代替每个主机一份配置的方法
  

$ cat mm.yml  
---
  
hostname: {{ inventory_hostname }}
  
monit_ipaddr: "{{ hostname }}"
  
machineid: {{ hostvars.machineid }}
  
platformname: vip10
  
mm_version: 16.08.6
  
lvm_create:
  
- vg: "data"
  
pv: "/dev/vdb"
  
lv: "apps"
  
mount_point: "/data"  
  

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

$ cat ../vip10.yml |grep 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.  
页: [1]
查看完整版本: 记一次优化ansible inventory的小例子