saltstack数据系统之Grains Pillar

假如想象 提交于 2021-01-28 15:09:59

1、数据系统grains, 如果老板让你收集线上300台服务器的相关硬件信息,你是选选择用一台台登录,还是用salt,又或者使用python的api。

grains是saltstack的组件之一,用来收集minion客户端的底层信息(操作系统版本、ip地址、内存、cpu、磁盘、内核等系统属性),在minion上收集的信息,可以作为master匹配目标

如果需要自定义grains,需要添加到minion的/etc/salt/grains(配置文件定义默认路径)。

minion的grains信息是在minion启动时采集汇报给master。grains是以key  value 形式存放的数据库。

查看grains的命令用法:   salt   ‘*’     sys.doc      grains

列出所有grains里的状态模块:  salt    '*'     grains.ls

打印所有状态信息:  salt   ‘*’    grains.items       (同上面状态模块的扩展信息)

列出每台的ip地址:   salt '*' grains.item       fqdn_ip4(可自定义显示的内容)

列出每台的操作系统:  salt '*' grains.item     os

#查看granins的命令用法:
[root@beijin base]# salt '*' sys.doc  grains
grains.append:
    New in version 0.17.0
#列出所有grains的状态模块:
[root@beijin base]# salt '*' grains.ls
beijin-01:
    - SSDs
    - biosversion
    - cpu_model
    - disks
    - dns
    - domain
    - fqdn_ip4
    - fqdns
    - gid
    - groupname
    - host
#列出所有状态信息内容:
[root@beijin base]# salt '*' grains.items
beijin-01:
    ----------
    SSDs:
    biosreleasedate:
        04/01/2014
    biosversion:
    disks:
        - vda
    dns:
        ----------
        domain:
        ip4_nameservers:
            - 100.100.2.136
            - 100.100.2.138
    domain:
    fqdn:
        beijin_2
    fqdn_ip4:
        - 172.27.170.41
#列出每台的ip地址:
[root@beijin base]# salt '*' grains.item fqdn_ip4
beijin-01:
    ----------
    fqdn_ip4:
        - 172.27.170.41
#列出每台的操作系统:
[root@beijin base]# salt '*' grains.item os
beijin-01:
    ----------
    os:
        CentOS

也支持同时检索多个数据:    salt     ‘*’    grains.item    fqdn_ip4   host    os

[root@beijin base]# salt '*' grains.item fqdn_ip4 host  os
beijin-01:
    ----------
    fqdn_ip4:
        - 172.27.170.41
    host:
        beijin_2
    os:
        CentOS

windows 下的使用:   salt   '*'  grains.item   os

[root@vm10-100-3-63 salt]# salt '*' grains.item os
3d-1-10.100.0.246:
    ----------
    os:
        Windows
3d-1-10.100.0.247:
    ----------
    os:
        Windows
3d-1-10.100.0.225:
    ----------
    os:
        Windows
3d-1-10.100.0.191:
    ----------
    os:
        Windows
[root@vm10-100-3-63 salt]# salt '*' grains.item fqdn_ip4
3d-1-10.100.0.225:
    ----------
    fqdn_ip4:
3d-1-10.100.0.218:
    ----------
    fqdn_ip4:
3d-1-10.100.0.191:
    ----------
    fqdn_ip4:
3d-1-10.100.0.229:
    ----------
    fqdn_ip4:
3d-1-10.100.0.247:
    ----------
    fqdn_ip4:
3d-1-10.100.0.246:
    ----------

2、用于匹配,比如公司有100台Centos,200台windwos,  那么如何匹配出来了.

两种方式: 匹配就是用键值来过滤出value。

salt   '*'    grains.item    os   id   fndn.ip4 

salt   -G  'os:CentOS'     test.ping             筛选Centos机器     

salt   -G  'osrelease:7*'     test.ping         筛选Centos 7机器(也可以这些写salt -G 'osrelease:7*' cmd.run 'ifconfig eth0|grep "inet "')

方法一:#匹配出相同系统的机器(先匹配打印到一个文件,然后用sed再处理)
[root@beijin base]# salt '*' grains.item os id fqdn.ip4
beijin-01:
    ----------
    fqdn.ip4:
    id:
        beijin-01
    os:
        CentOS
方法二:#匹配出Centos类型的机器:
[root@beijin base]# salt -G 'os:CentOS' test.ping
beijin-01:
    True
[root@beijin base]# salt -G 'osrelease:7*' cmd.run 'ifconfig|grep "inet "'
beijin-01:
            inet 172.27.170.41  netmask 255.255.240.0  broadcast 172.27.175.255
------------------------------------------------------
筛选windwos的机器:
[root@63 salt]# salt -G 'os:Windows' test.ping
1-10.100.0.239:
    True
1-10.100.0.188:
    True
1-10.100.0.225:
    True
1-10.100.0.191:
    True
[root@vm10-100-3-63 salt]# salt -G 'osrelease:10*' test.ping
3d-1-10.100.0.188:
    True
3d-1-10.100.0.229:
    True
3d-1-10.100.0.246:
    True
3d-1-10.100.0.191:
    True
[root@vm10-100-3-63 salt]# salt -G 'master:10.100.3.63' test.ping
3d-1-10.100.0.191:
    True
3d-1-10.100.0.229:
    True
3d-1-10.100.0.193:
    True
3d-1-10.100.0.215:
    True

(1)、自定义

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!