saltstack2 grains模块
admin
2023-03-23 15:00:44
0

###Grains模块:###


grains的应用场景:

1、信息查询

2、在远程执行里面匹配minion

比如我想要在所有centos的机器上执行一个命令

3、在top.sls里面匹配minion

4、在配置文件的模板里使用



1、信息查询

###把所有grains的key列出来,grains支持的所有模块

[root@salt_master ~]# salt 'minion.saltstack.com' grains.ls

minion.saltstack.com:

    - SSDs

    - cpu_flags

    - cpu_model

    - cpuarch

    - domain

    - fqdn

    - fqdn_ip4

    - fqdn_ip6

    - gpus

    - host

    - hwaddr_interfaces

    - id

    - init

    - ip4_interfaces

    - ip6_interfaces

    - ip_interfaces

    - ipv4

    - ipv6

    - kernel

    - kernelrelease

    - locale_info

    - localhost

    - lsb_distrib_codename

    - lsb_distrib_id

    - lsb_distrib_release

    - master

    - mdadm

    - mem_total

    - nodename

    - num_cpus

    - num_gpus

    - os

    - os_family

    - osarch

    - oscodename

    - osfinger

    - osfullname

    - osmajorrelease

    - osrelease

    - osrelease_info

    - path

    - ps

    - pythonexecutable

    - pythonpath

    - pythonversion

    - saltpath

    - saltversion

    - saltversioninfo

    - selinux

    - server_id

    - shell

    - virtual

    - zmqversion


##把所有grains的内容显示出来

[root@salt_master ~]# salt 'minion.saltstack.com' grains.items 

minion.saltstack.com:

    ----------

    SSDs:

    cpu_flags:

        - fpu

        - vme

        - de

        - pse

        - tsc

        - msr

        - pae

        - mce

        - cx8

        - apic

        - sep

        - mtrr

        - pge

        - mca

        - cmov

        - pat

        - pse36

        - clflush

        - dts

        - mmx

        - fxsr

        - sse

        - sse2

        - ss

        - syscall

        - nx

        - pdpe1gb

        - rdtscp

        - lm

        - constant_tsc

        - up

        - arch_perfmon

        - pebs

        - bts

        - xtopology

        - tsc_reliable

        - nonstop_tsc

        - aperfmperf

        - unfair_spinlock

        - pni

        - pclmulqdq

        - ssse3

        - fma

        - cx16

        - pcid

        - sse4_1

        - sse4_2

        - x2apic

        - movbe

        - popcnt

        - tsc_deadline_timer

        - aes

        - xsave

        - avx

        - f16c

        - rdrand

        - hypervisor

        - lahf_lm

        - abm

        - ida

        - arat

        - epb

        - xsaveopt

        - pln

        - pts

        - dts

        - fsgsbase

        - bmi1

        - avx2

        - smep

        - bmi2

        - invpcid

    cpu_model:

        Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz

    cpuarch:

        x86_64

    domain:

        saltstack.com

    fqdn:

        minion.saltstack.com

    fqdn_ip4:

        - 10.20.23.124

    fqdn_ip6:

    gpus:

        |_

          ----------

          model:

              SVGA II Adapter

          vendor:

              unknown

    host:

        minion

    hwaddr_interfaces:

        ----------

        eth2:

            00:0c:29:6e:29:0d

        lo:

            00:00:00:00:00:00

    id:

        minion.saltstack.com

    init:

        upstart

    ip4_interfaces:

        ----------

        eth2:

            - 10.20.23.124

        lo:

            - 127.0.0.1

    ip6_interfaces:

        ----------

        eth2:

            - fe80::20c:29ff:fe6e:290d

        lo:

            - ::1

    ip_interfaces:

        ----------

        eth2:

            - 10.20.23.124

            - fe80::20c:29ff:fe6e:290d

        lo:

            - 127.0.0.1

            - ::1

    ipv4:

        - 10.20.23.124

        - 127.0.0.1

    ipv6:

        - ::1

        - fe80::20c:29ff:fe6e:290d

    kernel:

        Linux

    kernelrelease:

        2.6.32-431.el6.x86_64

    locale_info:

        ----------

        defaultencoding:

            UTF8

        defaultlanguage:

            zh_CN

        detectedencoding:

            UTF-8

    localhost:

        salt_minion

    lsb_distrib_codename:

        Final

    lsb_distrib_id:

        CentOS

    lsb_distrib_release:

        6.5

    master:

        salt_master

    mdadm:

    mem_total:

        474

    nodename:

        salt_minion

    num_cpus:

        1

    num_gpus:

        1

    os:

        CentOS

    os_family:

        RedHat

    osarch:

        x86_64

    oscodename:

        Final

    osfinger:

        CentOS-6

    osfullname:

        CentOS

    osmajorrelease:

        6

    osrelease:

        6.5

    osrelease_info:

        - 6

        - 5

    path:

        /sbin:/usr/sbin:/bin:/usr/bin

    ps:

        ps -efH

    pythonexecutable:

        /usr/bin/python2.6

    pythonpath:

        - /usr/bin

        - /usr/lib64/python26.zip

        - /usr/lib64/python2.6

        - /usr/lib64/python2.6/plat-linux2

        - /usr/lib64/python2.6/lib-tk

        - /usr/lib64/python2.6/lib-old

        - /usr/lib64/python2.6/lib-dynload

        - /usr/lib64/python2.6/site-packages

        - /usr/lib/python2.6/site-packages

    pythonversion:

        - 2

        - 6

        - 6

        - final

        - 0

    saltpath:

        /usr/lib/python2.6/site-packages/salt

    saltversion:

        2015.5.10

    saltversioninfo:

        - 2015

        - 5

        - 10

        - 0

    selinux:

        ----------

        enabled:

            True

        enforced:

            Permissive

    server_id:

        748666745

    shell:

        /bin/bash

    virtual:

        VMware

    zmqversion:

        3.2.5


####想查看某一项的,把items改为单数item,并在后面加上某一项的名称:

[root@salt_master ~]# salt 'minion.saltstack.com' grains.item os

minion.saltstack.com:

    ----------

    os:

        CentOS


####get参数:相对于items,get只显示值的内容

[root@salt_master ~]# salt 'minion.saltstack.com' grains.get os

minion.saltstack.com:

    CentOS



2、在远程执行里面匹配minion

比如我想要在所有centos的机器上执行一个命令


[root@salt_master ~]# salt --help |grep grain

    -G, --grain         Instead of using shell globs to evaluate the target

                        use a grain value to identify targets, the syntax for

                        the target is the grain key followed by a

    --grain-pcre        Instead of using shell globs to evaluate the target

                        use a grain value to identify targets, the syntax for

                        the target is the grain key followed by a pcre regular


[root@salt_master ~]# salt -G 'os:CentOS' test.ping         ##-G表示使用grains进行匹配,,参数必须紧跟salt

minion.saltstack.com:

    True

minion1.saltstack.com:

    True


[root@salt_master ~]# salt -G 'fqdn:minion.saltstack.com' test.ping          

minion.saltstack.com:

    True

[root@salt_master ~]# salt 'minion.saltstack.com' grains.get fqdn   ###反查minion.saltstack.com的fqdn,用来定位

minion.saltstack.com:

    minion.saltstack.com


所以通过grains插件可以实现在什么条件的机器侠执行一条相同的命令,都可以通过grains进行匹配。

若是内置的grains满足不了我们的需求,,我们也可以自定义grains,,通过在minion端修改配置文件的方式来自定义grains


###minion端###

[root@salt_minion ~]# vim /etc/salt/minion    ####切到文件结尾

grains:

  roles: nginx

  env: prod

[root@salt_minion ~]# /etc/init.d/salt-minion restart

Stopping salt-minion daemon:                               [确定]

Starting salt-minion daemon:                               [确定]


[root@salt_master ~]# salt -G 'env:prod' test.ping

minion.saltstack.com:

    True                        ###成功匹配

[root@salt_master ~]# salt -G 'roles:nginx' test.ping 

minion.saltstack.com:

    True 


若是感觉grains写在minion配置文件里不方便,,也可以写在/etc/salt/grains文件下

前提是和配置文件里的不能冲突

###区别:加入到配置文件/etc/salt/minion上面必须指明为grains,,第二种方法为在/etc/salt/下创建一个名为grains的文件,不指明grains,直接写就好###


[root@salt_minion ~]# vim /etc/salt/grains

cloud: openstack

[root@salt_minion ~]# /etc/init.d/salt-minion restart            #####添加完后必须重启

Stopping salt-minion daemon:                               [确定]

Starting salt-minion daemon:                               [确定]

[root@salt_minion ~]# cat /etc/salt/grains

cloud: openstack

[root@salt_minion ~]# tail /etc/salt/minion

#

mysql.host: '10.20.23.209'

mysql.user: 'salt'

mysql.pass: 'salt'

mysql.db: 'salt'

mysql.port: 3306


grains: 

  role: nginx

  env: prod


###匹配一下:

[root@salt_master ~]# salt -G 'cloud:openstack' test.ping

minion.saltstack.com:

    True


###使用salt '*' saltutil.sync_grains刷新grains,就不需要minion端重启,测试:####

[root@salt_minion ~]# vim /etc/salt/grains 

cloud: openstack

test: salt              ###添加了这一行,保存退出,不重启minion端

###切到master端###

[root@salt_master ~]# salt '*' saltutil.sync_grains

minion.saltstack.com:

minion1.saltstack.com:

[root@salt_master ~]# salt -G 'test:salt' test.ping

minion.saltstack.com:

    True



3、在top.sls里面匹配minion


[root@salt_master ~]# vim /srv/salt/top.sls    ###切到最后,添加如下内容:


  'role:nginx':

    - match: grain

    - init.pkg

[root@salt_master ~]# cat /srv/salt/top.sls

base:

  '(minion|minion1).saltstack.com':

    - match: pcre

    - init.pkg

    - init.limit



#  'role:nginx':

#    - match: grain

#    - init.pkg              ###先注释掉,注释用#号,知道写法即可



相关内容

热门资讯

女子出租屋凌晨疑遭陌生人闯入,... 极目新闻记者 郭奕据红星新闻报道,居住在杭州的女子小鱼(化名)在社交媒体上发布了一段拍摄于4月28日...
唐山市委书记调整 澎湃新闻记者 岳怀让据河北卫视《河北新闻联播》消息,河北省委常委常斌已任唐山市委书记。公开资料显示,...
视频丨开工忙、消费旺、出口强 ... 国家发展改革委国家信息中心今天发布4月份经济各领域先行指标,显示出经济稳步向好的大趋势。
喷了光触媒的物品在车里可以除甲... 最佳回答 可以的,效果挺好的。光催化剂中的催化剂可以氧化分解各种有机污染物和无机污染物,在空气中与...
家庭装修走暗线还是明线好? 个人认为装修的话选择暗线好些 1、由于走暗线带来的美观效果非常强,因此成为大多数人的首选...
朗逸钥匙装饰盖怎么取下 将遥控钥匙有标志的一面向上,用扁的小起子撬进缝隙的中部,钥匙会分开一个缝,按中缝将钥匙分开即可。既然...
不平整的墙面怎么装饰 不平等的墙可以请专门的画腻子画的大师去进行创作。现在很多的墙面,人家都用刮腻子的方式去做壁画。像那种...
明线安装和暗线安装应该怎么选择... 随着社会发展,人们生活水平提高,大部分农村家庭都能盖上一层或者几层楼房,楼层盖好后接下来就是装修的问...
“华盛顿”号航母驶离日本横须贺... △“乔治·华盛顿”号核动力航空母舰(资料图)当地时间10日上午,美国“乔治·华盛顿”号核动力航母完成...
司机因操作不当引发车祸致2死6... 极目新闻记者 谢茂5月10日13时40分许,重庆黔江区一处十字路口发生一起交通事故。据重庆市公安局黔...