起因:
阿里雲新擴容一批機器,要對上面的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.