数据系统

  • 1. SaltStack数据系统
  • 2. SaltStack数据系统组件
    • 2.1 SaltStack组件之Grains
    • 2.2 SaltStack组件之Pillar
    • 2.3 Grains与Pillar的区别

1. SaltStack数据系统

SaltStack有两大数据系统,分别是:

  • Grains
  • Pillar

2. SaltStack数据系统组件

2.1 SaltStack组件之Grains

什么是grains:
是salt的一个组件,负责minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。每次的minion启动(重启)的时候都会采集。

应用场景:
1.在state中使用 用于配置管理模块
2.在target中使用,用来匹配minion,例如匹配操作系统使用-G的选项
3.用于信息查询,grains保存收集到的客户端的详细信息

信息查询实例:

//列出所有grains的key和value
[root@xian base]# salt '*' grains.items
yeqixian:----------SSDs:biosreleasedate:        //bios的时间09/30/2014biosversion:            //bios的版本6.00cpu_flags:              //cpu相关的属性- 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- rdtscp- lm- constant_tsc- arch_perfmon- pebs- bts- nopl- xtopology- tsc_reliable- nonstop_tsc- aperfmperf- pni- pclmulqdq- ssse3- cx16- pcid- sse4_1- sse4_2- x2apic- popcnt- tsc_deadline_timer- aes- xsave- avx- f16c- rdrand- hypervisor- lahf_lm- fsgsbase- tsc_adjust- smep- dtherm- ida- arat- pln- ptscpu_model:          //cpu的具体型号Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHzcpuarch:            //cpu架构x86_64disks:- sda- sr0- dm-0- dm-1dns:----------domain:ip4_nameservers:- 223.5.5.5- 223.6.6.6ip6_nameservers:nameservers:- 223.5.5.5- 223.6.6.6options:search:sortlist:domain:fqdn:minionfqdn_ip4:       //ip地址- 192.168.69.202fqdn_ip6:- fe80::6860:c429:1c06:1639gid:0gpus:|_----------model:SVGA II Adaptervendor:unknowngroupname:roothost:       //主机名minionhwaddr_interfaces:----------ens32:00:0c:29:d8:05:54lo:00:00:00:00:00:00id:         //minion的ID192.168.69.202init:systemdip4_gw:192.168.69.1ip4_interfaces:----------ens32:- 192.168.69.202lo:- 127.0.0.1ip6_gw:Falseip6_interfaces:----------ens32:- fe80::6860:c429:1c06:1639lo:- ::1ip_gw:Trueip_interfaces:----------ens32:- 192.168.69.202- fe80::6860:c429:1c06:1639lo:- 127.0.0.1- ::1ipv4:- 127.0.0.1- 192.168.69.202ipv6:- ::1- fe80::6860:c429:1c06:1639kernel:Linuxkernelrelease:3.10.0-693.el7.x86_64kernelversion:#1 SMP Tue Aug 22 21:09:27 UTC 2017locale_info:----------defaultencoding:UTF-8defaultlanguage:en_USdetectedencoding:UTF-8localhost:minionlsb_distrib_codename:CentOS Linux 7 (Core)lsb_distrib_id:CentOS Linuxmachine_id:59745bbcb85b42a1a8441ffed7b54cbamanufacturer:VMware, Inc.master:192.168.69.201mdadm:mem_total:1823nodename:localhost.localdomainnum_cpus:8num_gpus:1os:CentOSos_family:RedHatosarch:x86_64oscodename:CentOS Linux 7 (Core)osfinger:CentOS Linux-7osfullname:CentOS Linuxosmajorrelease:7osrelease:7.4.1708osrelease_info:- 7- 4- 1708path:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binpid:9407productname:VMware Virtual Platformps:ps -efHwwpythonexecutable:/usr/bin/pythonpythonpath:- /usr/bin- /usr/lib64/python27.zip- /usr/lib64/python2.7- /usr/lib64/python2.7/plat-linux2- /usr/lib64/python2.7/lib-tk- /usr/lib64/python2.7/lib-old- /usr/lib64/python2.7/lib-dynload- /usr/lib64/python2.7/site-packages- /usr/lib/python2.7/site-packagespythonversion:- 2- 7- 5- final- 0saltpath:/usr/lib/python2.7/site-packages/saltsaltversion:2018.3.3saltversioninfo:- 2018- 3- 3- 0selinux:----------enabled:Trueenforced:Permissiveserialnumber:VMware-56 4d b9 cc 33 9d ad d5-08 1d 49 ac bd d8 05 54server_id:1679846262shell:/bin/shswap_total:2047systemd:----------features:+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDNversion:219uid:0username:rootuuid:564db9cc-339d-add5-081d-49acbdd80554virtual:VMwarezfs_feature_flags:Falsezfs_support:Falsezmqversion:4.1.4//只查询所有的grains的key
[root@xian base]# salt '*' grains.ls
yeqixian:- SSDs- biosreleasedate- biosversion- cpu_flags- cpu_model- cpuarch- cwd- disks- dns- domain- fqdn- fqdn_ip4- fqdn_ip6- fqdns- gid- gpus- groupname- host- hwaddr_interfaces- id- init- ip4_gw- ip4_interfaces- ip6_gw- ip6_interfaces- ip_gw- ip_interfaces- ipv4- ipv6- kernel- kernelrelease- kernelversion- locale_info- localhost- lsb_distrib_codename- lsb_distrib_id- machine_id- manufacturer- master- mdadm- mem_total- nodename- num_cpus- num_gpus- os- os_family- osarch- oscodename- osfinger- osfullname- osmajorrelease- osrelease- osrelease_info- path- pid- productname- ps- pythonexecutable- pythonpath- pythonversion- saltpath- saltversion- saltversioninfo- selinux- serialnumber- server_id- shell- swap_total- systemd- uid- username- uuid- virtual- zfs_feature_flags- zfs_support- zmqversion//查询某个key的值,比如想获取安装系统
[root@xian base]# salt '*' grains.get os
yeqixian:CentOS[root@xian base]# salt '*' grains.get ip6_interfaces
yeqixian:----------ens33:- fd15:4ba5:5a2b:1008:b916:4746:8489:abda- fe80::a960:a184:96b9:c8e1lo:- ::1
[root@xian base]# salt '*' grains.get ip6_interfaces:ens33
yeqixian:- fd15:4ba5:5a2b:1008:b916:4746:8489:abda- fe80::a960:a184:96b9:c8e1目标匹配实例:
用Grains来匹配minion://在主机名叫xian的主机中执行命令
[root@xian base]# salt -G 'os:CentOS' cmd.run 'uptime'(在所有centos系统中执行命令)
yeqixian:03:22:20 up 44 min,  1 user,  load average: 0.00, 0.01, 0.05
xian:19:22:21 up 44 min,  1 user,  load average: 0.00, 0.02, 0.05
[root@xian base]# salt -G 'host:xian' cmd.run 'uptime'
xian:19:24:22 up 46 min,  1 user,  load average: 0.00, 0.01, 0.05在top file里面使用Grains:[root@xian base]# vim top.sls
base:'fqdn_ip4:192.168.116.145':- match: grain- web.nginx.nginx[root@xian base]# salt '*' state.highstate
xian:
----------ID: statesFunction: no.NoneResult: FalseComment: No Top file or master_tops data matches found. Please see master log for details.Changes:   Summary for xian
------------
Succeeded: 0
Failed:    1
------------
Total states run:     1
Total run time:   0.000 ms
yeqixian:
----------ID: nginx-installFunction: pkg.installedName: nginxResult: TrueComment: The following packages were installed/updated: nginxStarted: 17:53:03.853765Duration: 11842.51 msChanges:   ----------nginx:----------new:1:1.16.1-1.el7old:nginx-all-modules:----------new:1:1.16.1-1.el7old:nginx-filesystem:----------new:1:1.16.1-1.el7old:nginx-mod-http-image-filter:----------new:1:1.16.1-1.el7old:nginx-mod-http-perl:----------new:1:1.16.1-1.el7old:nginx-mod-http-xslt-filter:----------new:1:1.16.1-1.el7old:nginx-mod-mail:----------new:1:1.16.1-1.el7old:nginx-mod-stream:----------new:1:1.16.1-1.el7old:
----------ID: nginx-serviceFunction: service.runningName: nginxResult: TrueComment: Service nginx has been enabled, and is runningStarted: 17:53:15.707955Duration: 230.69 msChanges:   ----------nginx:TrueSummary for yeqixian
------------
Succeeded: 2 (changed=2)
Failed:    0
------------
Total states run:     2
Total run time:  12.073 s
ERROR: Minions returned with non-zero exit code自定义Grains的两种方法:minion配置文件,在配置文件中搜索grains(不推荐)[root@yeqixian ~]# vim /etc/salt/minion
#grains:
#  roles:
#    - webserver
#    - memcache
去掉#号,roles下面跟服务类型
用salt -G '*' grains.get role查看在/etc/salt下生成一个grains文件,在此文件中定义(推荐方式)
[root@xian ~]# vim /etc/salt/grains
roles: webserver
[root@xian ~]# salt-cp '*' /etc/salt/grains /etc/salt/grains
xian:----------/etc/salt/grains:True
yeqixian:----------/etc/salt/grains:True[root@xian ~]# systemctl restart salt-minion
[root@xian ~]# salt '*' grains.get role
xian:
yeqixian:不重启的情况下自定义Grains:[root@xian ~]# vim /etc/salt/grains
roles: webserver
[root@xian ~]# salt-cp '*' /etc/salt/grains /etc/salt/grains
xian:----------/etc/salt/grains:True
yeqixian:----------/etc/salt/grains:True[root@xian ~]# salt '*' saltutil.sync_grains
xian:
yeqixian:
[root@xian ~]# salt '*' grains.get role
xian:
yeqixian:

2.2 SaltStack组件之Pillar

  pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板、state、API等。在pillar中定义的数据与不同业务特性的被控主机相关联,这样不同被控主机只能看到自己匹配的数据,因此pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不同业务组主机的用户ID、组ID、读写权限、程序包等信息,定义的规范是采用python字典形式,即键/值,最上层的键一般为主机的ID或组名称,它的定义存储格式与Grains类似,都是YAML格式。

在Master配置文件中有一段Pillar settings选项专门定义Pillar相关的一些参数:

[root@xian ~]# vim /etc/salt/master
#pillar_roots:
#  base:
#    - /srv/pillar
#pillar_roots:
#  base:
#    - /srv/pillar
pillar_roots:base:- /srv/pillar/baseprod:- /srv/pillar/prodtest:- /srv/pillar/test
[root@xian ~]# mkdir -p /srv/salt/pillar/{base,prod,test}
[root@xian ~]# tree /srv/salt/pillar/
/srv/salt/pillar/
├── base
├── prod
└── test3 directories, 0 files

默认Base环境下Pillar的工作目录在/srv/pillar目录下。若你想定义多个环境不同的Pillar工作目录,只需要修改此处配置文件即可。

Pillar的特点:

可以给指定的minion定义它需要的数据
只有指定的人才能看到定义的数据
在master配置文件里设置

//查看pillar的信息
[root@xian ~]# salt '*' pillar.items
xian:----------
yeqixian:----------

默认pillar是没有任何信息的,如果想查看信息,需要在 master 配置文件上把 pillar_opts的注释取消,并将其值设为 True。

[root@xian ~]# vim /etc/salt/master
#pillar_opts: False
pillar_opts: True

//重启master并查看pillar的信息

[root@xian ~]# systemctl restart salt-master
[root@xian ~]# salt '*' pillar.items
....此处省略N行winrepo_dir_ng:/srv/salt/win/repo-ngwinrepo_insecure_auth:Falsewinrepo_passphrase:winrepo_password:winrepo_privkey:winrepo_pubkey:winrepo_refspecs:- +refs/heads/*:refs/remotes/origin/*- +refs/tags/*:refs/tags/*winrepo_remotes:- https://github.com/saltstack/salt-winrepo.gitwinrepo_remotes_ng:- https://github.com/saltstack/salt-winrepo-ng.gitwinrepo_ssl_verify:Truewinrepo_user:worker_threads:5zmq_backlog:1000zmq_filtering:Falsezmq_monitor:False

pillar自定义数据:
在master的配置文件里找pillar_roots可以看到其存放pillar的位置

[root@xian ~]# vim /etc/salt/master
#pillar_roots:
#  base:
#    - /srv/pillar
#pillar_roots:
#  base:
#    - /srv/pillar
pillar_roots:base:- /srv/pillar/baseprod:- /srv/pillar/prodtest:- /srv/pillar/test
[root@xian ~]# mkdir -p /srv/pillar/{base,prod,test}
[root@xian ~]# tree /srv/pillar/
/srv/salt/pillar/
├── base
├── prod
└── test3 directories, 0 files
[root@xian ~]# systemctl restart salt-master[root@xian ~]# vim /srv/pillar/base/nginx.sls
{% if grains['host'] == 'yeqixian' %}
nginx: nginx
{% elif grains['host'] == 'xian' %}
nginx: nginx2
{% endif %}

//定义top file入口文件

[root@xian ~]# vim /srv/pillar/base/top.sls
base:       //指定环境'*':     //指定目标- nginx            //引用nginx.sls或nginx/init.sls

//这个top.sls文件的意思表示的是主机的base环境能够访问到nginx这个pillar

[root@xian base]# salt '*' pillar.items
yeqixian:----------nginx:nginx
xian:----------nginx:nginx2

//在salt下修改apache的状态文件,引用pillar的数据

[root@xian ~]# cd /srv/salt/base/web/
[root@xian web]# ls
nginx
[root@xian web]# cd nginx/
[root@xian nginx]# vim nginx.sls
nginx-install:pkg.installed:- name: {{ pillar['nginx'] }}nginx-service:service.running:- name: {{ pillar['nginx'] }}- enable: True

//执行高级状态文件

[root@xian base]# salt 'yeqixian' state.highstate
yeqixian:
----------ID: nginx-installFunction: pkg.installedName: nginxResult: TrueComment: The following packages were installed/updated: nginxStarted: 19:01:51.371212Duration: 8959.773 msChanges:   ----------nginx:----------new:1:1.16.1-1.el7old:nginx-all-modules:----------new:1:1.16.1-1.el7old:nginx-mod-http-image-filter:----------new:1:1.16.1-1.el7old:nginx-mod-http-perl:----------new:1:1.16.1-1.el7old:nginx-mod-http-xslt-filter:----------new:1:1.16.1-1.el7old:nginx-mod-mail:----------new:1:1.16.1-1.el7old:nginx-mod-stream:----------new:1:1.16.1-1.el7old:
----------ID: nginx-serviceFunction: service.runningName: nginxResult: TrueComment: Service nginx has been enabled, and is runningStarted: 19:02:00.337647Duration: 217.732 msChanges:   ----------nginx:TrueSummary for yeqixian
------------
Succeeded: 2 (changed=2)
Failed:    0
------------
Total states run:     2
Total run time:   9.178 s

2.3 Grains与Pillar的区别

名称 存储位置 数据类型 数据采集更新方式 应用
grains minion端 静态数据 minion启动时收集,也可以使用saltutil.sync_grains进行刷新 存储minion基本数据。比如用于匹配minion,自身数据可以用来做资产管理cmdb等。
pillar master端 动态数据 在master端定义,指定给对应的minion。可以使用saltutil.refresh_pillar进行刷新 存储master指定数据,只用指定的minion可以看到。用于敏感数据保存。

SaltStack之数据系统相关推荐

  1. saltstack自动化运维系列②之saltstack的数据系统

    saltstack自动化运维系列②之saltstack的数据系统 grains:搜集minion启动时的系统信息,只有在minion启动时才会搜集,grains更适合做一些静态的属性值的采集,例如设备 ...

  2. saltstack配置管理数据系统

    saltstack配置管理 1.YAML语言 2.用SaltStack配置一个apache实例 3.top file 3.1 highstate高级状态的使用 4.数据系统grains和pillar的 ...

  3. 2、Saltstack的数据系统

    一.Grains grains是salt用来收集minion端底层系统信息的接口.比如,操作系统type.域名 .IP地址.内存及其他相关系统属性信息等.存储在minion端,用于保存minion端数 ...

  4. Saltstack自动化运维详解(数据系统 jinja模板 job管理)

    文章目录 1. saltstack 的数据系统 1.1 SaltStack组件之Grains 1.grains使用方法 信息查询 查询某个key值 用Grains来匹配minion 2.自定义grai ...

  5. saltstack配置管理和数据系统

    文章目录 1.YAML语言 2. 用SaltStack配置一个yum安装的nginx实例 3. top file 3.1 top file介绍 3.2 top file实例 3.3 高级状态highs ...

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

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

  7. saltstack(十):saltstack数据系统-grains和pillar

    saltstack数据系统-grains和pillar https://www.cnblogs.com/shhnwangjian/p/5985868.html 1.1         granis G ...

  8. SaltStack数据系统

    1.SaltStack数据系统 SaltStack有两大数据系统,分别是: Grains Pillar 2.SaltStack数据系统组件 2.1 SaltStack组件之Grains Grains是 ...

  9. saltstack高级状态的使用、top file的使用、数据系统grains和pillar的使用

    saltstack高级状态的使用.top file的使用.数据系统grains和pillar的使用 1. YAML语言 YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类 ...

  10. Saltstack中Grains静态数据系统和Pillar动态数据系统

    文章目录 grains简介 grains模块的应用 pillar模块的应用 grains与pillar最主要的区别:静态取值方式 grains ,保留在minion端: pillar保留在master ...

最新文章

  1. 洛谷 P5057 [CQOI2006]简单题(树状数组)
  2. RabbitMQ 入门系列(5)— RabbitMQ 使用场景优缺点
  3. 1476. Lunar Code
  4. opencv3 图像处理(一)图像缩放( python与c++ 实现)
  5. 分布式存储 Ceph 介绍及原理架构分享--云平台技术栈系列01
  6. window .bat
  7. java一系列数组的表示方法_Java入门系列-10-数组
  8. mockito接口_什么是Mockito Extra接口?
  9. C语言实现简单计算器(可以处理小括号)
  10. android学习笔记---39_采用Service实现电话监控器,刻录打电话者的声音后通过socket上传到服务端
  11. 华为全球最快 AI 训练集群 Atlas 900 诞生!
  12. cmake添加查找目录_cmake find_package路径详解
  13. 编译原理教程_3 词法分析
  14. c++删除文件delete_关于macos删除快捷键,你知道这些区别用法吗?
  15. 第三章——空间域处理方法
  16. jenkins 2.19.1安装
  17. javaweb论文参考文献(2020年精选91个)
  18. LM4871(3W音频功放芯片)中文资料
  19. Photoshop实用的快捷键大全
  20. 如何快速分割每段视频,并提取画面中任意一帧

热门文章

  1. Shell脚本学习指南(一)——入门
  2. 基于TCP的在线词典
  3. POWERBUILDER -- PB通过URL下载局域网或者互联网上的图片或者文件
  4. 渗透测试工具——Metasploit
  5. 批量下载CSS中的图片
  6. html图片没有白边,css插入背景图片底部有白边的解决方法
  7. 关于彻底卸载流氓 “趋势科技防毒网络版客户端”最详细步骤,亲测有效
  8. 【读书笔记-数据挖掘概念与技术】数据预处理
  9. Android源码提取系统签名
  10. 建模国赛2016A-系泊系统的设计优秀论文