【SaltStack】SaltStack数据系统Grains详解

TangLu 运维 2015-11-18 4950 0

Grains是SaltStack的一个组件,存放在SaltStack的minion端,当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion发生过重启时才会进行数据的更新

 

Grains应用场景1——信息查询(用于查询minion端的IP信息、FQDN信息等)

首先看看SaltStack默认支持的Granis有哪些,使用以下命令:


salt '*' grains.ls


执行命令后可以看到如下图一样会列出许多选项,只不过这里只是列出默认的Grains选项,但并没有返回需要的值(其中三个箭头所指的分别是fqdn名、IP地址、系统信息,其他选项通过名字大概也能看出意义)


grains1.jpg

如果需要看到每项的值怎么办呢?执行以下命令即可

salt '*' grains.items



执行后可以看到每一个item都取到了值

grains2.jpg

 

如果需要对单项item取值的话,只需要指定那项item即可。如要取得所有minion端的IP,执行以下命令:

[root@ns-master-c01 salt]# salt '*' grains.item ipv4
ns-master-c01.novalocal:
    ----------
    ipv4:
        - 127.0.0.1
        - 172.16.0.21




Grains应用场景2——匹配minion(如想要在系统为CentOS的minion中执行一条命令)

salt -G os:CentOS cmd.run 'w' #-G是指使用Grains来进行匹配,os是Grains众多item中的一项


执行结果如下:


grains3.jpg 

 

自定义Grains的Item

Grains除了自带一些item外,还可以自定义需要的item。比如我们可以给部分minion定义一个Nginx的item作为标签,然后对含有这些标签的minion进行Nginx的安装。步骤如下:


1、编辑minion配置文件,找到grains开头的内容,取消注释,增加需要的内容


grains:  #取消这些行的注释
  roles:  
    - webserver  #系统默认,这里保留用于参考
    - memcache  #同上
    - nginx  #自定义一个nginx标签


2、重启minion,否则minion数据不会更新


3、进行一个匹配测试,注意这里salt不需要再用'*'来指定minion

grains4.jpg

评论