1. 主机规划

Grains文档

  1. https://docs.saltstack.com/en/latest/topics/grains/index.html

注意事项

修改了master或者minion的配置文件,那么必须重启对应的服务。

2. Grains基本信息

  1. Saltstack 数据系统
  2. Grains (谷粒)
  3. Pillar (柱子)
  4.  
  5. Grains:静态数据 Minion启动的时候收集的Minion本地的相关信息
  6. 如:操作系统版本,内核版本,CPU,内存,硬盘,设备型号,序列号
  7. 、信息查询 【资产管理】★★★★★
  8. 、用于目标选择 salt -G 'os:CentOS' test.ping ★★★★★
  9. 、配置管理中使用
  10.  
  11. 刷新grains 【这样修改grains信息不用重启salt-minion 也能刷新】
  12. 不然需要重启salt-minion
  13. salt '*' saltutil.sync_grains
  14.  
  15. 开发一个Grains
  16. Python:写一个Python脚本,返回一个字典就可以了。
  1. 可以通过
  2.  
  3. salt 'salt01' saltutil.sync_grains 【推荐】
  4. salt 'salt01' saltutil.sync_all 【范围太广,不推荐使用】
  5. salt 'salt01' state.highstate 【执行高级状态时同步,不建议使用】
  6. salt 'salt01' saltutil.refresh_modules 【只刷新客户端,服务端向客户端分发的不刷新,比如修改了grainspy脚本时,不会推送到minion 不建议使用】
  7. salt 'salt01' saltutil.refresh_grains 【只刷新客户端,服务端向客户端分发的不刷新,比如修改了grainspy脚本时,不会推送到minion 不建议使用】
  8.  
  9. 将配置同步到minion
  10. 如果做了更改也可以使用
  11. salt 'salt01' sys.reload_modules

3. Grains优先级信息

  1. 经验证优先级如下:
  2. salt系统自带信息 【优先级最低】
  3. 自编写Python脚本 备注:在指定目录下存放py脚本
  4. /etc/salt/grains 备注:该文件不存在,需要自己创建
  5. /etc/salt/minion 【优先级最高】

推荐使用 自编写py脚本定义,这样自定义的grains只需要在master端维护即可,减少后期维护成本。

下文内容就是根据优先级写的。

4. Salt自带Grains 信息

4.1. grains条目项信息

  1. [root@salt100 salt]# salt 'salt01' grains.ls # 查看salt01机器有哪些grains条目项信息
  2. ………………

4.2. grains全部信息

  1. [root@salt100 salt]# salt 'salt01' grains.items # 查看salt01机器有哪些grains信息
  2. salt01:
  3. ----------
  4. SSDs:
  5. biosreleasedate:
  6. //
  7. biosversion:
  8. 6.00
  9. cpu_flags:
  10. - fpu
  11. - vme
  12. - de
  13. - pse
  14. - tsc
  15. - msr
  16. - pae
  17. - mce
  18. - cx8
  19. - apic
  20. - sep
  21. - mtrr
  22. - pge
  23. - mca
  24. - cmov
  25. - pat
  26. - pse36
  27. - clflush
  28. - mmx
  29. - fxsr
  30. - sse
  31. - sse2
  32. - ss
  33. - ht
  34. - syscall
  35. - nx
  36. - pdpe1gb
  37. - rdtscp
  38. - lm
  39. - constant_tsc
  40. - arch_perfmon
  41. - nopl
  42. - xtopology
  43. - tsc_reliable
  44. - nonstop_tsc
  45. - eagerfpu
  46. - pni
  47. - pclmulqdq
  48. - ssse3
  49. - fma
  50. - cx16
  51. - pcid
  52. - sse4_1
  53. - sse4_2
  54. - x2apic
  55. - movbe
  56. - popcnt
  57. - tsc_deadline_timer
  58. - aes
  59. - xsave
  60. - avx
  61. - f16c
  62. - rdrand
  63. - hypervisor
  64. - lahf_lm
  65. - abm
  66. - 3dnowprefetch
  67. - fsgsbase
  68. - tsc_adjust
  69. - bmi1
  70. - avx2
  71. - smep
  72. - bmi2
  73. - invpcid
  74. - mpx
  75. - rdseed
  76. - adx
  77. - smap
  78. - clflushopt
  79. - xsaveopt
  80. - xsavec
  81. - arat
  82. cpu_model:
  83. Intel(R) Core(TM) i5-8250U CPU @ .60GHz
  84. cpuarch:
  85. x86_64
  86. disks:
  87. - sda
  88. - sr0
  89. dns:
  90. ----------
  91. domain:
  92. ip4_nameservers:
  93. - 10.0.0.2
  94. - 223.5.5.5
  95. ip6_nameservers:
  96. nameservers:
  97. - 10.0.0.2
  98. - 223.5.5.5
  99. options:
  100. search:
  101. sortlist:
  102. domain:
  103. fqdn:
  104. salt01
  105. fqdn_ip4:
  106. - 172.16.1.11
  107. fqdn_ip6:
  108. - fe80::20c:29ff:fe95:1b84
  109. - fe80::20c:29ff:fe95:1b7a
  110. gid:
  111.  
  112. gpus:
  113. |_
  114. ----------
  115. model:
  116. SVGA II Adapter
  117. vendor:
  118. unknown
  119. groupname:
  120. root
  121. host:
  122. salt01
  123. hwaddr_interfaces:
  124. ----------
  125. eth0:
  126. :0c:::1b:7a
  127. eth1:
  128. :0c:::1b:
  129. lo:
  130. :::::
  131. id:
  132. salt01
  133. init:
  134. systemd
  135. ip4_gw:
  136. 10.0.0.2
  137. ip4_interfaces:
  138. ----------
  139. eth0:
  140. - 172.16.1.11
  141. eth1:
  142. - 10.0.0.11
  143. lo:
  144. - 127.0.0.1
  145. ip6_gw:
  146. False
  147. ip6_interfaces:
  148. ----------
  149. eth0:
  150. - fe80::20c:29ff:fe95:1b7a
  151. eth1:
  152. - fe80::20c:29ff:fe95:1b84
  153. lo:
  154. - ::
  155. ip_gw:
  156. True
  157. ip_interfaces:
  158. ----------
  159. eth0:
  160. - 172.16.1.11
  161. - fe80::20c:29ff:fe95:1b7a
  162. eth1:
  163. - 10.0.0.11
  164. - fe80::20c:29ff:fe95:1b84
  165. lo:
  166. - 127.0.0.1
  167. - ::
  168. ipv4:
  169. - 10.0.0.11
  170. - 127.0.0.1
  171. - 172.16.1.11
  172. ipv6:
  173. - ::
  174. - fe80::20c:29ff:fe95:1b7a
  175. - fe80::20c:29ff:fe95:1b84
  176. kernel:
  177. Linux
  178. kernelrelease:
  179. 3.10.-.el7.x86_64
  180. kernelversion:
  181. # SMP Fri Apr :: UTC
  182. locale_info:
  183. ----------
  184. defaultencoding:
  185. UTF-
  186. defaultlanguage:
  187. en_US
  188. detectedencoding:
  189. UTF-
  190. localhost:
  191. salt01
  192. lsb_distrib_codename:
  193. CentOS Linux (Core)
  194. lsb_distrib_id:
  195. CentOS Linux
  196. machine_id:
  197. 5ae5f27014ee438780bf37ae68889471
  198. manufacturer:
  199. VMware, Inc.
  200. master:
  201. salt100
  202. mdadm:
  203. mem_total:
  204.  
  205. nodename:
  206. salt01
  207. num_cpus:
  208.  
  209. num_gpus:
  210.  
  211. os:
  212. CentOS
  213. os_family:
  214. RedHat
  215. osarch:
  216. x86_64
  217. oscodename:
  218. CentOS Linux (Core)
  219. osfinger:
  220. CentOS Linux-
  221. osfullname:
  222. CentOS Linux
  223. osmajorrelease:
  224.  
  225. osrelease:
  226. 7.5.
  227. osrelease_info:
  228. -
  229. -
  230. -
  231. path:
  232. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  233. pid:
  234.  
  235. productname:
  236. VMware Virtual Platform
  237. ps:
  238. ps -efHww
  239. pythonexecutable:
  240. /usr/bin/python
  241. pythonpath:
  242. - /usr/bin
  243. - /usr/lib64/python27.zip
  244. - /usr/lib64/python2.
  245. - /usr/lib64/python2./plat-linux2
  246. - /usr/lib64/python2./lib-tk
  247. - /usr/lib64/python2./lib-old
  248. - /usr/lib64/python2./lib-dynload
  249. - /usr/lib64/python2./site-packages
  250. - /usr/lib64/python2./site-packages/gtk-2.0
  251. - /usr/lib/python2./site-packages
  252. pythonversion:
  253. -
  254. -
  255. -
  256. - final
  257. -
  258. saltpath:
  259. /usr/lib/python2./site-packages/salt
  260. saltversion:
  261. 2018.3.
  262. saltversioninfo:
  263. -
  264. -
  265. -
  266. -
  267. selinux:
  268. ----------
  269. enabled:
  270. False
  271. enforced:
  272. Disabled
  273. serialnumber:
  274. VMware- 4d 5c a8 3c- be 1b 7a
  275. server_id:
  276.  
  277. shell:
  278. /bin/sh
  279. swap_total:
  280.  
  281. systemd:
  282. ----------
  283. features:
  284. +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
  285. version:
  286.  
  287. uid:
  288.  
  289. username:
  290. root
  291. uuid:
  292. 86324d56-5c98-3ca8--82be30951b7a
  293. virtual:
  294. VMware
  295. zfs_feature_flags:
  296. False
  297. zfs_support:
  298. False
  299. zmqversion:
  300. 4.1.

4.3. 查询grains指定信息

  1. [root@salt100 ~]# salt 'salt01' grains.item roles # 没有该项信息,因此只显示key 不显示value
  2. salt01:
  3. ----------
  4. roles:
  5. [root@salt100 ~]# salt 'salt01' grains.item os
  6. salt01:
  7. ----------
  8. os:
  9. CentOS

5. 自写grains的py脚本

该脚本在salt master端,然后推送到minion端。

5.1. master端编写py脚本

  1. [root@salt100 salt]# pwd
  2. /srv/salt
  3. [root@salt100 salt]# mkdir _grains # salt指定的位置
  4. [root@salt100 salt]# cd _grains/
  5. [root@salt100 _grains]# vim my_grains.py
  6. #!/usr/bin/env python
  7. # -*- coding:utf- -*-
  8.  
  9. def grains_define():
  10. # initialize a grains dictionary
  11. grains = {}
  12. # 填充信息
  13. grains['roles'] = ["webserver01","memcache01"],
  14. grains['os'] = 'redhat01'
  15.  
  16. # 返回这个字典
  17. return grains

5.2. grains刷新并查看指定信息

在master端执行,并查看grains信息

  1. [root@salt100 ~]# salt 'salt01' saltutil.sync_grains # 会推送py脚本到minion端,并刷新grains信息
  2. salt01:
  3. - grains.my_grains
  4. [root@salt100 ~]# salt 'salt01' grains.item roles
  5. salt01:
  6. ----------
  7. roles:
  8. |_
  9. - webserver01
  10. - memcache01
  11. [root@salt100 ~]# salt 'salt01' grains.item os
  12. salt01:
  13. ----------
  14. os:
  15. redhat01

5.3. 在minion端查看推送过来的文件位置

  1. [root@salt01 minion]# pwd
  2. /var/cache/salt/minion
  3. [root@salt01 minion]# tree
  4. .
  5. ├── accumulator
  6. ├── extmods
  7. └── grains # 在这个目录下
  8. ├── my_grains.py
  9. └── my_grains.pyc
  10. ├── files
  11. └── base
  12. ├── _grains
  13. └── my_grains.py
  14. ├── top.sls
  15. └── web
  16. └── apache.sls
  17. ├── highstate.cache.p
  18. ├── module_refresh
  19. ├── pkg_refresh
  20. ├── proc
  21. └── sls.p
  22.  
  23. directories, files

6. 在/etc/salt/grains 中定义grains

注意:

该文件默认不存在,需要自己创建。

6.1. minion端配置修改

在salt01上操作

  1. [root@salt01 salt]# cat /etc/salt/grains
  2. roles:
  3. - webserver02
  4. - memcache02
  5. os: redhat02

6.2. grains刷新并查看指定信息

在salt100上操作

  1. [root@salt100 ~]# salt 'salt01' saltutil.sync_grains # 刷新grains信息
  2. salt01:
  3. [root@salt100 ~]# salt 'salt01' grains.item roles
  4. salt01:
  5. ----------
  6. roles:
  7. - webserver02
  8. - memcache02
  9. [root@salt100 ~]# salt 'salt01' grains.item os
  10. salt01:
  11. ----------
  12. os:
  13. redhat02

7. 在/etc/salt/minion 中定义grains

生产中不建议使用,因为写在了默认的配置文件中,不利于后期维护。

7.1. minion端配置修改

minion端salt01机器上配置修改

  1. [root@salt01 salt]# pwd
  2. /etc/salt
  3. [root@salt01 salt]# vim minion
  4. ………………
  5. # Custom static grains for this minion can be specified here and used in SLS
  6. # files just like all other grains. This example sets custom grains, with
  7. # the 'roles' grain having two values that can be matched against.
  8. grains:
  9. roles:
  10. - webserver03
  11. - memcache03
  12. os: redhat03
  13. # deployment: datacenter4
  14. # cabinet:
  15. # cab_u: -

7.2. grains刷新并查看指定信息

在master端刷新grains信息,并查看

  1. [root@salt100 ~]# salt 'salt01' saltutil.sync_grains # 刷新指定minion的grains信息
  2. salt01:
  3. [root@salt100 ~]# salt 'salt01' grains.item roles
  4. salt01:
  5. ----------
  6. roles:
  7. - webserver03
  8. - memcache03
  9. [root@salt100 ~]# salt 'salt01' grains.item os
  10. salt01:
  11. ----------
  12. os:
  13. redhat03

8. Grains使用方式

8.1. 查询grains的指定信息

  1. [root@salt100 salt]# salt 'salt0*' grains.item os # 通过通配符匹配salt0* minion端的操作系统信息
  2. salt01:
  3. ----------
  4. os:
  5. CentOS
  6. salt03:
  7. ----------
  8. os:
  9. CentOS
  10. salt02:
  11. ----------
  12. os:
  13. CentOS
  14. [root@salt100 salt]# salt 'salt0*' grains.item ip4_interfaces:eth0 # 多级查询
  15. salt03:
  16. ----------
  17. ip4_interfaces:eth0:
  18. - 172.16.1.13
  19. salt01:
  20. ----------
  21. ip4_interfaces:eth0:
  22. - 172.16.1.11
  23. salt02:
  24. ----------
  25. ip4_interfaces:eth0:
  26. - 172.16.1.12
  27. [root@salt100 salt]# salt 'salt0*' grains.item ip4_interfaces:eth0: # 取列表中的第一个值★★★★★
  28. salt01:
  29. ----------
  30. ip4_interfaces:eth0::
  31. 172.16.1.11
  32. salt03:
  33. ----------
  34. ip4_interfaces:eth0::
  35. 172.16.1.13
  36. salt02:
  37. ----------
  38. ip4_interfaces:eth0::
  39. 172.16.1.12

8.2. 通过grains查询信息

示例1

  1. [root@salt100 salt]# salt 'salt01' grains.item os
  2. salt01:
  3. ----------
  4. os:
  5. CentOS
  6. [root@salt100 salt]# salt -G 'os:CentOS' cmd.run 'echo "zhangliang $(date +%Y)"' # 指定操作系统为CentOS的
  7. salt03:
  8. zhangliang
  9. salt02:
  10. zhangliang
  11. salt01:
  12. zhangliang
  13. salt100:
  14. zhangliang

示例2

  1. [root@salt100 salt]# salt 'salt01' grains.item ip_interfaces
  2. salt01:
  3. ----------
  4. ip_interfaces:
  5. ----------
  6. eth0:
  7. - 172.16.1.11
  8. - fe80::20c:29ff:fe95:1b7a
  9. eth1:
  10. - 10.0.0.11
  11. - fe80::20c:29ff:fe95:1b84
  12. lo:
  13. - 127.0.0.1
  14. - ::
  15. [root@salt100 salt]# salt -G 'ip_interfaces:eth0:172.16.1.11' cmd.run 'whoami'
  16. salt01:
  17. root
  18. [root@salt100 salt]# salt -G 'ip_interfaces:eth1:10.0.0.11' cmd.run 'whoami'
  19. salt01:
  20. root

9. 在top file中使用grains

9.1. top.sls编写

  1. [root@salt100 salt]# pwd
  2. /srv/salt
  3. [root@salt100 salt]# cat top.sls
  4. base:
  5. # 使用通配符 暂时注释掉
  6. # 'salt0*':
  7. # - web.apache
  8. # - web.nginx # 可以有多个
  9. # 指定具体minion
  10. 'salt03':
  11. - web.apache
  12. # 使用grains匹配,添加如下几行
  13. 'roles:webserver03':
  14. - match: grain
  15. - web.apache

9.2. state.highstate执行

首先通过grains查看salt01和salt02 的roles信息

  1. [root@salt100 salt]# salt 'salt01' grains.item roles
  2. salt01:
  3. ----------
  4. roles:
  5. - webserver03
  6. - memcache03
  7. [root@salt100 salt]# salt 'salt02' grains.item roles
  8. salt02:
  9. ----------
  10. roles:

执行结果

  1. [root@salt100 salt]# salt 'salt01' state.highstate test=True # 执行正常
  2. ………………
  3. [root@salt100 salt]# salt 'salt01' state.highstate # 执行正常
  4. ………………
  5. [root@salt100 salt]# salt 'salt02' state.highstate test=True # 执行异常【top.file 中没有该匹配】
  6. salt02:
  7. ----------
  8. ID: states
  9. Function: no.None
  10. Result: False
  11. Comment: No Top file or master_tops data matches found.
  12. Changes:
  13.  
  14. Summary for salt02
  15. ------------
  16. Succeeded:
  17. Failed:
  18. ------------
  19. Total states run:
  20. Total run time: 0.000 ms

Saltstack_使用指南04_数据系统-Grains的更多相关文章

  1. Saltstack_使用指南05_数据系统-Pillar

    1. 主机规划 Pillar文档 https://docs.saltstack.com/en/latest/topics/pillar/index.html 注意事项 修改了master或者minio ...

  2. Saltstack_使用指南12_配置管理-jinja模板

    1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...

  3. Saltstack_实战指南02_各主机Pillar信息指定

    1. 实战项目GitHub地址 该项目已经放在了GitHub上,地址如下: https://github.com/zhanglianghhh/salt-example-lnmp 2. 主机规划 3. ...

  4. Saltstack_使用指南17_salt-ssh

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  5. Saltstack_使用指南16_syndic

    1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...

  6. Saltstack_实战指南01_系统规划

    1. 实战项目GitHub地址 之前<Saltstack_使用指南>详细讲解了saltstack的使用.那么从这节开始实战讲解,当然不会再像之前那样详细说明了.只是讲一些系统规划之类的信息 ...

  7. 2. SaltStack数据系统: Grains、Pillar

    1. SaltStack数据系统 Grains (谷物) Pillar (支柱) 2.Grains Grains存放着Salt命令启动时收集的信息,运行时不收集 2.1  信息查询 收集资产 网卡,i ...

  8. Saltstack数据系统Grains和Pillar(三)

    Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...

  9. SaltStack数据系统-Grains

    上一篇:SaltStack配置管理 granis:谷粒 pillar:柱子 grains是salt的一个组件,存放minion启动时候收集的信息(状态信息) 查看 salt '*' grains.it ...

随机推荐

  1. 今天俺要说一说工厂方法模式(Factory)

    前言;工厂方法模式又叫做工厂模式,它是23个设计模式中的一个,它解决的还是在软件设计中创建对象的问题,它可以更好的解决用户需求的变化. 问题;在简单工厂模式中,我们将实例化的对象全部放于Factory ...

  2. 漫画:全面理解java.lang.IllegalArgumentException及其可用性设计

    经过一段时间的学习与实践,飞鸟已经可以独力解决一些问题.小鱼就让飞鸟讲述一些遇到的问题和解决过程. 报错日志: 这个产生的原因是我覆盖Collections.sort的Comparator方法的时候 ...

  3. HBase查询优化之Short-Circuit Local Reads

    1.概述 在<HBase查询优化>一文中,介绍了基于HBase层面的读取优化.由于HBase的实际数据是以HFile的形式,存储在HDFS上.那么,HDFS层面也有它自己的优化点,即:Sh ...

  4. 互联网视频直播技术(广电总局、优酷土豆、XX直播)

    互联网直播是目前最火的技术之一,涵盖了很多方面的知识(网络,CDN,GPU,算法,图像处理),以下我介绍互联网直播的大体框架和关键技术点: 一.前端视频流协议 前端流主要包括UDP.RTMP.RTSP ...

  5. 输入法设置,SublimeTest,putty掉线

    设置默认中文 在我们使用计算机中,如果输入法的默认语言是英文,那么我们操作起来会更加方便,那我们怎么设置呢??? 以Windows10为例 SublimeTest相关设置 SublimeTest出现乱 ...

  6. ubuntu 15.10 设置静态ip 分配固定ip 设置dns 设置网关 命令行配置ip 固定ip不生效怎么办

    要用到的文件: 配置接口信息 /etc/network/interfaces 配置内容: auto eth0 iface eth0 inet static address 192.168.216.18 ...

  7. Spring拓展接口之FactoryBean,我们来看看其源码实现

    前言 开心一刻 那年去相亲,地点在饭店里,威特先上了两杯水,男方绅士的喝了一口,咧嘴咋舌轻放桌面,手抚额头闭眼一脸陶醉,白水硬是喝出了82年拉菲的感觉.如此有生活情调的幽默男人,果断拿下,相处后却发现 ...

  8. web缓存策略之HTTP缓存大全

    一. web缓存总分类 数据库数据缓存 Web应用,特别是SNS类型的应用,往往关系比较复杂,数据库表繁多,如果频繁进行数据库查询,很容易导致数据库不堪重荷.为了提供查询的性能,会将查询后的数据放到内 ...

  9. 【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们 ...

  10. 【Mybatis】使用Mybatis-Generator自动生成entity、dao、mapping

    使用过mybatis的应该都有用过Mybatis-Generator,本文主要介绍使用Mybatis-Generator来自动生成entity.dao.mapping文件. Mybatis-Gener ...