1、SaltStack数据系统

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

  • Grains
  • Pillar

2、SaltStack数据系统组件

2.1 SaltStack组件之Grains

Grains是SaltStack的一个组件,其存放着minion启动时收集到的信息。

Grains是SaltStack组件中非常重要的组件之一,因为我们在做配置部署的过程中会经常使用它,Grains是SaltStack记录minion的一些静态信息的组件。可简单理解为Grains记录着每台minion的一些常用属性,比如CPU、内存、磁盘、网络信息等。我们可以通过grains.items查看某台minion的所有Grains信息。

Grains的功能:

  • 收集资产信息
    Grains应用场景:
  • 信息查询
  • 在命令行下进行目标匹配
  • 在top file中进行目标匹配
  • 在模板中进行目标匹配
    模板中进行目标匹配请看:https:// docs.saltstack.com/en/latest/topics/pillar/

信息查询实例:

// 列出所有grains的key和value
[root@JLin ~]# salt 'JiaL'  grains.items
JiaL:----------biosreleasedate:07/22/2020biosversion:6.00cpu_flags:- fpu- vme- de- pse- tsc- msr- pae- mce- cx8- apic- sep- mtrr- pge- mca- cmov- pat- pse36- clflush- mmx- fxsr- sse- sse2- ss- ht- syscall- nx- pdpe1gb- rdtscp- lm- constant_tsc- arch_perfmon- nopl- xtopology- tsc_reliable- nonstop_tsc- cpuid- pni- pclmulqdq- vmx- ssse3- fma- cx16- pcid- sse4_1- sse4_2- x2apic- movbe- popcnt- tsc_deadline_timer- aes- xsave- avx- f16c- rdrand- hypervisor- lahf_lm- abm- 3dnowprefetch- cpuid_fault- invpcid_single- pti- ssbd- ibrs- ibpb- stibp- tpr_shadow- vnmi- ept- vpid- ept_ad- fsgsbase- tsc_adjust- bmi1- avx2- smep- bmi2- invpcid- rdseed- adx- smap- clflushopt- xsaveopt- xsavec- xgetbv1- xsaves- arat- md_clear- flush_l1d- arch_capabilitiescpu_model:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHzcpuarch:x86_64cwd:/disks:- sr0- sdadns:----------domain:ip4_nameservers:- 114.114.114.114ip6_nameservers:nameservers:- 114.114.114.114options:search:sortlist:domain:efi:Falseefi-secure-boot:Falsefqdn:JiaLfqdn_ip4:- 192.168.122.1- 192.168.23.181fqdn_ip6:- fe80::20c:29ff:fe38:3b88fqdns:- JiaLgid:0gpus:|_----------model:SVGA II Adaptervendor:vmwaregroupname:roothost:JiaLhwaddr_interfaces:----------ens33:00:0c:29:38:3b:88lo:00:00:00:00:00:00virbr0:52:54:00:03:27:2fvirbr0-nic:52:54:00:03:27:2fid:JiaLinit:systemdip4_gw:192.168.23.2ip4_interfaces:----------ens33:- 192.168.23.181lo:- 127.0.0.1virbr0:- 192.168.122.1virbr0-nic:ip6_gw:Falseip6_interfaces:----------ens33:- fe80::20c:29ff:fe38:3b88lo:- ::1virbr0:virbr0-nic:ip_gw:Trueip_interfaces:----------ens33:- 192.168.23.181- fe80::20c:29ff:fe38:3b88lo:- 127.0.0.1- ::1virbr0:- 192.168.122.1virbr0-nic:ipv4:- 127.0.0.1- 192.168.23.181- 192.168.122.1ipv6:- ::1- fe80::20c:29ff:fe38:3b88kernel:Linuxkernelparams:|_- BOOT_IMAGE- (hd0,msdos1)/vmlinuz-4.18.0-338.el8.x86_64|_- root- /dev/mapper/cs-root|_- ro- None|_- crashkernel- auto|_- resume- /dev/mapper/cs-swap|_- rd.lvm.lv- cs/root|_- rd.lvm.lv- cs/swap|_- rhgb- None|_- quiet- Nonekernelrelease:4.18.0-338.el8.x86_64kernelversion:#1 SMP Fri Aug 27 17:32:14 UTC 2021locale_info:----------defaultencoding:UTF-8defaultlanguage:en_USdetectedencoding:UTF-8timezone:EDTlocalhost:JiaLlsb_distrib_codename:CentOS Stream 8lsb_distrib_id:CentOS Streamlsb_distrib_release:8lvm:----------cs:- home- root- swapmachine_id:a31bd091754e49b29e14975a56498ad7manufacturer:VMware, Inc.master:192.168.23.180mdadm:mem_total:7741nodename:JiaLnum_cpus:4num_gpus:1os:CentOS Streamos_family:RedHatosarch:x86_64oscodename:CentOS Stream 8osfinger:CentOS Stream-8osfullname:CentOS Streamosmajorrelease:8osrelease:8osrelease_info:- 8path:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binpid:16380productname:VMware Virtual Platformps:ps -efHwwpythonexecutable:/usr/bin/python3.6pythonpath:- /usr/bin- /usr/lib64/python36.zip- /usr/lib64/python3.6- /usr/lib64/python3.6/lib-dynload- /usr/lib64/python3.6/site-packages- /usr/lib/python3.6/site-packagespythonversion:- 3- 6- 8- final- 0saltpath:/usr/lib/python3.6/site-packages/saltsaltversion:3004saltversioninfo:- 3004selinux:----------enabled:Trueenforced:Enforcingserialnumber:VMware-56 4d ec be fe 77 80 35-b4 25 9c b3 86 38 3b 88server_id:736403290shell:/bin/shssds:swap_total:8063systemd:----------features:+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacyversion:239systempath:- /usr/local/sbin- /usr/local/bin- /usr/sbin- /usr/bintransactional:Falseuid:0username:rootuuid:beec4d56-77fe-3580-b425-9cb386383b88virtual:VMwarezfs_feature_flags:Falsezfs_support:Falsezmqversion:4.3.4
// 列出所有的grains的key
[root@JLin ~]# salt 'JiaL' grains.ls
JiaL:- biosreleasedate- biosversion- cpu_flags- cpu_model- cpuarch- cwd- disks- dns- domain- efi- efi-secure-boot- 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- kernelparams- kernelrelease- kernelversion- locale_info- localhost- lsb_distrib_codename- lsb_distrib_id- lsb_distrib_release- lvm- 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- ssds- swap_total- systemd- systempath- transactional- uid- username- uuid- virtual- zfs_feature_flags- zfs_support- zmqversion

目标匹配实例:
用Grains来匹配minion:

// 在所有centos系统中执行命令
[root@JLin ~]# salt -G 'os:centos stream' cmd.run 'uptime'
JLin:21:01:31 up 2 min,  2 users,  load average: 0.32, 0.31, 0.13
JLLL:21:01:31 up 2 min,  2 users,  load average: 0.26, 0.22, 0.09
JiaL:21:01:31 up 2 min,  2 users,  load average: 0.22, 0.26, 0.11
[root@JLin ~]# salt -G 'os:centos stream' cmd.run 'date'
JiaL:Tue Nov  2 21:06:38 EDT 2021
JLin:Tue Nov  2 21:06:38 EDT 2021
JLLL:Tue Nov  2 21:06:38 EDT 2021

在top file里面使用Grains:

[root@JLin ~]# cd /srv/salt/base/
[root@JLin base]# vim top.sls
[root@JLin base]# cat top.sls

自定义Grains的两种方法:

minion配置文件,在配置文件中搜索grains
在/etc/salt下生成一个grains文件,在此文件中定义(推荐方式)

[root@JLin ~]# vim /etc/salt/grains
test-grains: linux-JiaL
[root@JLin ~]# systemctl restart salt-minion
[root@JLin ~]# salt '*' grains.get test-grains
JLin:linux-JiaL
JiaL:
JLLL:

不重启的情况下自定义Grains:

[root@JLin ~]# vim /etc/salt/grains
test-grains: linux-JiaL
Yasuo: EEEEQAQAQR[root@JLin ~]# salt '*' saltutil.sync_grains
JiaL:
JLLL:
JLin:
[root@JLin ~]# salt '*' grains.get Yasuo
JLin:EEEEQAQAQR
JiaL:
JLLL:

2.2 SaltStack组件之Pillar

Pillar也是SaltStack组件中非常重要的组件之一,是数据管理中心,经常配置states在大规模的配置管理工作中使用它。Pillar在SaltStack中主要的作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的定义存储格式与Grains类似,都是YAML格式。

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

#pillar_roots:
#  base:
#    - /srv/pillar

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

Pillar的特点:

  • 可以给指定的minion定义它需要的数据
  • 只有指定的人才能看到定义的数据
  • 在mater配置文件里设置
// 查看pillar的信息
[root@JLin ~]# salt '*' pillar.items
JLin:----------
JLLL:----------
JiaL:----------

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

[root@JLin ~]# vim /etc/salt/JLin
# JLin config file that can then be used on minions.
pillar_opts: True# The pillar_safe_render_error option prevents the JLin from passing pillar// 重启JLin并查看pillar的信息
[root@JLin ~]# systemctl restart salt-JLin.service
[root@JLin ~]# salt '*' pillar.itemsuser:rootutils_dirs:- /var/cache/salt/JLin/extmods/utilsverify_env:Truewinrepo_branch:JLinwinrepo_cachefile:winrepo.pwinrepo_dir:/srv/salt/win/repowinrepo_dir_ng:/srv/salt/win/repo-ngwinrepo_fallback:winrepo_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自定义数据:
在JLin的配置文件里找pillar_roots可以看到其存放pillar的位置

[root@JLin ~]# vim /etc/salt/JLin
#####         Pillar settings        #####
##########################################
# Salt Pillars allow for the building of global data that can be made selectively
# available to different minions based on minion grain filtering. The Salt
# Pillar is laid out in the same fashion as the file server, with environments,
# a top file and sls files. However, pillar data does not need to be in the
# highstate format, and is generally just key/value pairs.
pillar_roots:base:- /srv/pillar/baseprod:- /srv/pillar/prod#ext_pillar:
#  - hiera: /etc/hiera.yaml
#  - cmd_yaml: cat /etc/salt/yaml[root@JLin ~]# mkdir -p /srv/pillar/{base,prod}
[root@JLin ~]# tree /srv/pillar/
/srv/pillar/
├── base
└── prod2 directories, 0 files[root@JLin ~]# systemctl restart salt-JLin.service
[root@JLin ~]# vim /srv/pillar/base/apache.sls
{% if grains['os'] == 'centos stream' %}
service: httpd
{% elif grains['os'] == 'CentOS' %}
service: nginx
{% endif %}// 定义top file入口文件
[root@JLin ~]# vim /srv/pillar/base/top.sls
base:       // 指定环境'JiaL':     // 指定目标- apache            // 引用apache.sls或apache/init.sls
// 这个top.sls文件的意思表示的是JiaL这台主机的base环境能够访问到apache这个pillar[root@JLin ~]# salt '*' pillar.items
JiaL:----------service:httpd
JLin:----------
JLLL:----------// 在salt下修改apache的状态文件,引用pillar的数据
[root@JLin ~]# vim /srv/salt/base/web/apache/apache.sls
apache-install:pkg.installed:- name: {{ pillar['service'] }}apache-service:service.running:- name: {{ pillar['service'] }}- enable: True

执行高级状态文件

[root@JLin ~]# salt 'JiaL' state.highstate
JiaL:
----------ID: apache-installFunction: pkg.installedName: httpdResult: TrueComment: All specified packages are already installedStarted: 23:24:43.354525Duration: 135.43 msChanges:
----------ID: apache-serviceFunction: service.runningName: httpdResult: TrueComment: The service httpd is already runningStarted: 23:24:45.753544Duration: 62.14 msChanges:   Summary for JiaL
------------
Succeeded: 2
Failed:    0
------------
Total states run:     2
Total run time:   1.213 s

2.3 Grains与Pillar的区别

名称 存放位置 类型 采集方式 应用场景
Grains minion 静态 minion启动时采集 可通过刷新避免重启minion服务 1.信息查询
2.在命令行下进行目标匹配
3.在top file中进行目标匹配
4.在模板中进行目标匹配
Pillar master 动态 指定,实时生效 1.目标匹配
2.敏感数据配置

http://www.taodudu.cc/news/show-2741764.html

相关文章:

  • Rsync简介和使用
  • saltstack高效运维简介和部署,SaltStack 与 Ansible 如何选择?
  • SaltStack简介和安装
  • htpp
  • 直接启动htpp服务
  • 常见的HTPP状态码
  • htpp学习
  • QT 多线程异步获取htpp信息 网络通信
  • 快速搞懂htpp原理
  • htpp-server开启https服务终端报错问题
  • 初识htpp与tcp
  • htpp proxy
  • NET 模拟Htpp请求
  • HTTP-Runoob:HTPP Content-Type
  • 【node.js】一个基于HTPP的服务
  • python中的请求方法_Python爬虫HTPP请求方法有哪些
  • HTPP的请求方式有哪些?
  • Htpp发展史
  • HTPP常见状态码
  • 【HTTP】HTPP学习笔记
  • golang构建htpp服务
  • 通过Htpp访问svn内容
  • Python爬虫-关于HTPP请求方法有哪些
  • node的HTPP请求
  • HTPP协议
  • HTPP状态码
  • htpp请求
  • HTPP介绍
  • HTPP详解(真的很经典)
  • idea报错 Result Maps collection does not contain value for com.

SaltStack数据系统相关推荐

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

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

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

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

  3. saltstack数据系统Grains

    1.什么是Grains系统   Grains是SaltStack收集的有关底层管理系统的静态信息. SaltStack收集的Grains信息包括操作系统版本.域名.IP地址.内核.操作系统类型.内存以 ...

  4. saltstack数据系统之Pillar

    在master上面打开系统自带的pillar: [root@linux-node1 ~]# vim /etc/salt/master 556 pillar_opts: True [root@linux ...

  5. saltstack数据系统——pillar

    pillar 存储位置:master端,数据类型:动态数据 ,数据采集方式: 在master端定义,指定给对应的minion.可以使用saltuitl.refresh_pillar刷新. 应用:存储m ...

  6. Saltstack数据系统——grains和pillar

    一.grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备型号等) 1.自定义grains的item [root@se ...

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

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

  8. 自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  9. 标杆徐2018 Linux自动化运维实战,标杆徐2018 Linux自动化运维系列⑦: SaltStack自动化配置管理实战...

    结合企业自动化集群场景讲解,轻松玩转SaltStack自动化配置管理工具 第1章 SaltStack基础应用 SaltStack安装 SaltStack认证 Saltstack远程执行 SaltSta ...

最新文章

  1. Xdebug的安装-(无错可执行版)
  2. 面试时写不出排序算法?看这篇就够了
  3. 这次是真的!波士顿动力Atlas机器人又进化了,自主导航get新技能
  4. BERT在小米NLP业务中的实战探索
  5. django项目允许其他机器访问
  6. 嵌入式linux系统,给WIFI模块增加一个开关
  7. Oracle常用字段数据类型/to_char函数
  8. python列表元素零的移动_python列表多行
  9. matlab中如何添加注释
  10. 服务器发送消息技术,知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)...
  11. 解决虚拟机能ping通宿主机,而宿主机不能ping通虚拟机
  12. 预处理器sass_Sass — Web的预处理器装饰
  13. LeetCode 258. 各位相加
  14. 安全领域多位世界级权威的智慧结晶——《黑客新型攻击防范:深入剖析犯罪软件》...
  15. 通信原理眼图画法_光纤通信链路入侵与检测技术研究综述
  16. seay代码审计mysql插件报错_Seay源代码审计系统v2.0源码
  17. 数学建模常用模型之秩和比综合评价法
  18. 自动化所夏令营数学概念复习
  19. 语义分割yolov5 v4.0 baseline快速复现 快速跑通 图像分割 图像分类 重新训练,训练结果,测试结果,实验图片-20210227
  20. PeckShield:图文拆解FCoin资产流向,其鼎盛时期便已显颓势?

热门文章

  1. 3万字通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?
  2. 图像算法工程师面试汇总
  3. 驳《驳〈论OIer谈恋爱的必要性〉》
  4. 监听audio是否加载完毕
  5. 5g消息服务器,5G消息开启信息服务新篇章
  6. iOS各种设备识别码IDFA、UDID、UUID、MAC、OpenUDID、IDFV
  7. 爬取优美图库里的照片,并存到文件夹中
  8. 剑灵32位登录服务器维护,(32位系统可稳定运行剑灵)剑灵客户端发生错误的解决办法...
  9. Metasploitable渗透测试实战:ms17-010
  10. 关于互联网流量劫持分析及可选的解决方案