公司好清静啊,楼主在这里默默的加班写博客。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了
转载于:https://blog.51cto.com/lixcto/1429333