SaltStack 05-SaltStack数据系统Grains

Grains:静态数据

  • 当Minion启动的时候收集的Minion本地的相关信息(只收集一次)
  • 操作系统版本,内核版本,CPU,内存,硬盘,设备型号,序列号
  • 不重启minion,这些信息数据是不会改变的。

主要作用:

  • 资产管理,信息查询
  • 用于目标选择
  • 配置管理中使用

自定义Grans的常用方法:

  • 通过Minion配置文件定义
  • 通过Grains相关模块定义
  • 通过Python脚本定义

信息查询

salt 'saltStack01' grains.ls          # 列出所有的grains数据的key
salt 'saltStack01' grains.items       # 列出信息所有信息
salt '*' grains.item os               # 列出单个key信息
salt '*' grains.item fqdn_ip4         # 列出所有主机的IP地址

目标选择

salt -G 'os:CentOS' test.ping         # 查看属于CentOS的主机
salt -G 'os:CentOS' cmd.run 'ip a'    # 让属于CentOS的主机的执行该命令

Grians优先级

  1. 系统自带
  2. grains文件写的
  3. minion配置文件写的
  4. 自己写的

通过Minion配置文件定义Grains

1、修改Minion配置文件

[root@saltStack01 minion.d]# cat /etc/salt/minion |grep -A 6 'grains:'
grains:
  roles:
    - webserver
    - memcache
#  deployment: datacenter4
#  cabinet: 13
#  cab_u: 14-15
[root@saltStack01 minion.d]#

2、为了统一管理Minion的Grains信息,需要把配置在/etc/salt/grains中

[root@saltStack01 salt]# cat /etc/salt/grains 
name: liang
test1: 
  - test-12
  - test-24
[root@saltStack01 salt]#

3、重启Minion服务:

systemctl restart salt-minion

4、验证:

[root@saltStack01 salt]# salt '*salt*' grains.item roles
saltStack01:
    ----------
    roles:
        - webserver
        - memcache
[root@saltStack01 salt]# salt '*salt*' grains.item name
saltStack01:
    ----------
    name:
        liang
[root@saltStack01 salt]# salt '*salt*' grains.item test1
saltStack01:
    ----------
    test1:
        - test-12
        - test-24
[root@saltStack01 salt]#

通过Grains模块定义Grains

grains.append命令

[root@saltStack01 salt]# salt '*salt*' grains.append salt 'haha'
saltStack01:
    ----------
    salt:
        - haha
[root@saltStack01 salt]# salt '*salt*' grains.item salt
saltStack01:
    ----------
    salt:
        - haha
[root@saltStack01 salt]#

grains.setvals命令

[root@saltStack01 salt]# salt '*salt*' grains.setvals "{'salt': 'good','abc': 'cool'}"
saltStack01:
    ----------
    abc:
        cool
    salt:
        good
[root@saltStack01 salt]# salt '*salt*' grains.item salt
saltStack01:
    ----------
    salt:
        good
[root@saltStack01 salt]# cat /etc/salt/grains
abc: cool
name: liang
salt: good
test1:
- test-12
- test-24
[root@saltStack01 salt]#

通过Python扩展Grains

  • 可大批量设备中,我们需要区分每台设备的业务角色

1、在Master上编写一个Python脚本

[root@saltStack01 ~]# mkdir -p /srv/salt/_grains
[root@saltStack01 ~]# cat /srv/salt/_grains/example.py 
#!/usr/bin/python
def grains():
    local={}
    test={'key': 'vaule','key1': 'vaule1','key2': 'vaule2'}
    local['list']= [1,2,3,4]
    local['string']= 'str'
    local['dict']= test
    return local
[root@saltStack01 ~]# cat /srv/salt/_grains/info.py 
#!/usr/bin/python
import commands
def role():
    information={}
    information['disk_num'] = commands.getoutput('fdisk -l |grep Disk|wc -l')
    information['hostname'] = commands.getoutput('hostname')
    return information
[root@saltStack01 _grains]#

2、把脚本同步到minion上去

[root@saltStack01 ~]# salt '*salt*' saltutil.sync_grains
saltStack01:
    - grains.example
    - grains.info
[root@saltStack01 ~]# salt '*salt*' cmd.run 'ls /var/cache/salt/minion/extmods/grains/'
saltStack01:
    example.py
    example.pyc
    info.py
    info.pyc
[root@saltStack01 ~]#

3、验证

[root@saltStack01 ~]# salt '*salt*' grains.item list string dict
saltStack01:
    ----------
    dict:
        ----------
        key:
            vaule
        key1:
            vaule1
        key2:
            vaule2
    list:
        - 1
        - 2
        - 3
        - 4
    string:
        str
[root@saltStack01 ~]# salt '*salt*' grains.item disk_num
saltStack01:
    ----------
    disk_num:
        3
[root@saltStack01 ~]#

Grains相关命令:

[root@saltStack01 ~]# salt 'centos6' sys.list_functions grains
centos6:
    - grains.append
    - grains.delval
    - grains.filter_by
    - grains.get
    - grains.get_or_set_hash
    - grains.has_value
    - grains.item
    - grains.items
    - grains.ls
    - grains.remove
    - grains.setval
    - grains.setvals
[root@saltStack01 ~]# salt 'centos6' sys.doc grains

猜你喜欢

转载自www.cnblogs.com/liangjingfu/p/9504437.html