设为首页 收藏本站
查看: 890|回复: 0

[经验分享] saltstack2 grains模块

[复制链接]

尚未签到

发表于 2018-7-31 09:29:40 | 显示全部楼层 |阅读模式
  
  ###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

  ->  - 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

  ->  - 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:
  ----------
  eth1:
  00:0c:29:6e:29:0d
  lo:
  00:00:00:00:00:00

  >  minion.saltstack.com
  init:
  upstart
  ip4_interfaces:
  ----------
  eth1:
  - 10.20.23.124
  lo:
  - 127.0.0.1
  ip6_interfaces:
  ----------
  eth1:
  - fe80::20c:29ff:fe6e:290d
  lo:
  - ::1
  ip_interfaces:
  ----------
  eth1:
  - 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>  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>  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              ###先注释掉,注释用#号,知道写法即可

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543931-1-1.html 上篇帖子: SaltStack安装及配置 下篇帖子: saltstack1 安装及基础操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表