公司好清静啊,楼主在这里默默的加班写博客。salt这玩意太牛逼了,相比于楼主几个月前的单机手动运维,这玩意太高上大了。好吧,楼主是乡下人进城,见笑。
OK。上一篇写了grains的概念,管理方式等方面的内容。这一篇谢谢grains的一些应用场景。
grains咋用呢?给谁用的呢?
其实有几种用法,咱们前面也用过。
第一种,命令行匹配minion。
root@salt-master:~# salt -G 'liss:lisisi' cmd.which vim salt-minion: /usr/bin/vim root@salt-master:~#
第二种,state的top.sls这个文件里面匹配minion
root@salt-master:~# cat /srv/salt/top.sls base: 'liss:lisisi': - match: grain - users - apache2 - mysql.install - mysql.conf root@salt-master:~#
第三种用在jinja模板里面。
root@salt-master:~# cat /srv/salt/top.sls base: {% set name = salt['grains.get']('liss', '') %} {% if name %} 'liss:`name`': - match: grain - apache2 {% endif %} root@salt-master:~#
第四种,也可以这么用jinja模板
传个文件到minion上面玩玩,文件是用jinja定义的 root@salt-master:~# cat /srv/salt/test.sls /tmp/test: file.managed: - source: salt://test.jinja - user: lixc - group: lixc - mode: 644 - template: jinja jinja模板 root@salt-master:~# cat /srv/salt/test.jinja {%for key,value in grains.items()%} {%if key|first == 'l'%} {{key|title}} {%endif%} {%endfor%} 输出东西太多,楼主加了个--out=quiet,可以实现不输出 root@salt-master:~# salt '*' state.sls test --out=quiet 看看结果 root@salt-master:~# salt '*' cmd.run 'cat /tmp/test|egrep -v "^$"' salt-minion: Lixc Lsb_Distrib_Os Lsb_Distrib_Description Localhost Lsb_Distrib_Id Lsb_Distrib_Release Liss Lsb_Distrib_Codename root@salt-master:~#
当然grains其实还可以用在pillar里面,还可以以__grains__字典的形式,用在module里面。这个等到写到pillar和module的时候,再写
OK了