SaltStack入门【Grains配置】

Grains是saltstack能够获取基础系统的静态信息的接口,之所以被称为grains接口,是因为通过salt获取了minion的基础信息。当minion第一次启动的时候,它会收集关于系统的所有的静态信息。grains 接口是用于salt的核心模块和组件,以便正确的salt minion命令在特定的系统上能够自动可用。
重要的是需要记住当salt minion启动时那些从它获取到的静态信息,因为这些信息是静态的。这意味着在grains中的信息是不变的,因此这些自然的数据时静态的,所以grains的信息是像这样子的,运行内核,或者操作系统。

salt grains 跟puppet的facter功能类似。主要负责采集客户端一些基本信息, 这个也完全可以自定义,可以在客户端自定义,然后自动汇报上来;也可以从服务器端定义然后推下去,采集完后,再汇报上来;
1、查看minion端grains采集的信息
salt ‘test01’ grains.ls #列出 grains采集的项目

[root@master _grains]# salt 'test01' grains.ls
test01:
    - SSDs
    - biosreleasedate
    - biosversion
    - cpu_flags
    - cpu_model
    - cpuarch
........

salt ‘test01’ grains.items #列出grains采集项目的具体值

[root@master _grains]# salt 'test01' grains.items
test01:
    ----------
    SSDs:
    biosreleasedate:
        07/30/2013
    biosversion:
        6.00
........

salt ‘test01’ grains.item os #列出 grains采集的单个项目值

[root@master _grains]# salt 'test01' grains.item os
test01:
    ----------
    os:
        CentOS

salt ‘test01’ grains.item os selinux ##多个项目用空格隔开

[root@master _grains]# salt 'test01' grains.item os selinux 
test01:
    ----------
    os:
        CentOS
    selinux:
        ----------
        enabled:
            False
        enforced:
            Disabled

2、master配置方法:
在 /srv/salt 文件夹下创建_grains文件夹
创建一个python脚本
脚本示例1:
增加一个项目,固定值

root@master _grains]# cat http.py 
def http():
    http={}
    http['http']='2.0.0'   
    return http

脚本示例2:
增加一个项目,通过命令取值

root@master _grains]# cat http.py 
import commands
def http():
    http={}
    m = commands.getoutput("/usr/sbin/apachectl -v |grep version |cut -d / -f 2")
    http['http']=m
    return http

可以通过

salt 'test01' saltutil.sync_grains
或salt 'test01' saltutil.sync_all
或salt 'test01' state.highstate

将配置同步到minion端
如果做了更改也可以使用

salt ‘test01’ sys.reload_modules

3、minion配置方法:
编辑 /etc/salt/minion文件,找到grains项:
grains2
更改完成后,需要重启salt-minion才能是使配置生效
service salt-minion restart

发表评论