1. SaltStack数据系统
SaltStack有两大数据系统,分别是:
- Grains
- Pillar
2. SaltStack数据系统组件
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/
2.1 Grains信息查询:
列出所有grains的key和value
[root@wyt1 ~]# salt '*' grains.items
wyt1:
----------
biosreleasedate: //bios的时间
07/29/2019
biosversion: //bios的版本
6.00
cpu_flags: //cpu相关的属性
- fpu
- vme
- de
- pse
- tsc
- msr
- pae
- mce
- cx8
- apic
- sep
- mtrr
- pge
- mca
- cmov
- pat
- pse36
- clflush
- mmx
- fxsr
- sse
- sse2
- ss
- syscall
- nx
- rdtscp
- lm
- constant_tsc
- arch_perfmon
- nopl
- xtopology
- tsc_reliable
- nonstop_tsc
- 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
- arat
cpu_model: //cpu的具体型号
Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
cpuarch: //cpu架构
x86_64
cwd:
/
disks:
- sda
- sr0
dns:
----------
domain:
ip4_nameservers:
- 114.114.114.114
ip6_nameservers:
nameservers:
- 114.114.114.114
options:
search:
sortlist:
domain:
fqdn:
wyt1
fqdn_ip4: //ip地址
- 192.168.232.128
fqdn_ip6:
- fe80::20c:29ff:fea5:4fe1
fqdns:
- wyt1
gid:
0
gpus:
|_
----------
model:
SVGA II Adapter
vendor:
vmware
groupname:
root
host: //主机名
wyt1
hwaddr_interfaces:
----------
ens33:
00:0c:29:a5:4f:e1
lo:
00:00:00:00:00:00
id: //minion的ID
wyt1
init:
systemd
ip4_gw:
192.168.232.2
ip4_interfaces:
----------
ens33:
- 192.168.232.128
lo:
- 127.0.0.1
......
只查询所有的grains的key
[root@wyt1 ~]# salt '*' grains.ls
wyt1:
- 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
....
查询某个key的值,比如想获取ip地址
[root@wyt1 ~]# salt '*' grains.get fqdn_ip4
wyt1:
- 192.168.232.128
[root@wyt1 ~]# salt '*' grains.get ip4_interfaces
wyt1:
----------
ens33:
- 192.168.232.128
lo:
- 127.0.0.1
[root@wyt1 ~]# salt '*' grains.get ip4_interfaces:ens33
wyt1:
- 192.168.232.128
[root@wyt1 ~]# salt '*' grains.get ipv4
wyt1:
- 127.0.0.1
- 192.168.232.128
2.2 Grains目标匹配实例:
用Grains来匹配minion:
//在所有centos系统中执行命令
[root@wyt1 ~]# salt '*' grains.get os
wyt1:
CentOS
[root@wyt1 ~]# salt -G 'os:CentOS' cmd.run 'uptime'
wyt1:
05:48:42 up 15:15, 1 user, load average: 0.18, 0.08, 0.06
[root@wyt1 ~]# salt -S '192.168.232.128' test.ping
wyt1:
True
[root@wyt1 ~]# salt -G 'os:CentOS' test.ping
wyt1:
True
在top file里面使用Grains:
//安装httpd
[root@wyt1 ~]# cat /srv/salt/base/web/apache/install.sls
apache-install:
pkg.installed:
- name: httpd
[root@wyt1 ~]# cat /srv/salt/base/top.sls
base:
'os:CentOS':
- match: grain
- web.apache.install
//在top file里执行grains
[root@wyt1 ~]# salt '*' state.highstate
wyt1:
----------
ID: apache-install
Function: pkg.installed
Name: httpd
Result: True
Comment: The following packages were installed/updated: httpd
Started: 06:22:11.133608
Duration: 19682.599 ms
Changes:
----------
httpd:
----------
new:
2.4.6-67.el7.centos
old:
httpd-tools:
----------
new:
2.4.6-67.el7.centos
old:
Summary for wyt1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 19.683 s
[root@wyt1 ~]# rpm -qa|grep httpdc //查看是否安装
httpd-tools-2.4.6-67.el7.centos.x86_64
httpd-2.4.6-67.el7.centos.x86_64
2.3 自定义Grains的两种方法:
在minion在配置文件中搜索grains,自定义文件
[root@wyt1 ~]# vim /etc/salt/minion
grains:
role:
- test
[root@wyt1 ~]# systemctl restart salt-minion
[root@wyt1 ~]# salt -G 'os:CentOS' grains.get role
wyt1:
- test
在/etc/salt下生成一个grains文件 ,在此文件中定义(推荐方式)
[root@wyt1 ~]# vim /etc/salt/grains
role: test
[root@wyt1 ~]# salt-cp '*' /etc/salt/grains /etc/salt/grains
[root@wyt1 ~]# salt '*' saltutil.sync_grains //刷新grains
wyt1:
[root@wyt1 ~]# salt '*' grains.get role
wyt1:
- test
3. SaltStack组件之Pillar
Pillar也是SaltStack组件中非常重要的组件之一,是数据管理中心,经常配置states在大规模的配置管理工作中使用它。Pillar在SaltStack中主要的作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的定义存储格式与Grains类似,都是YAML格式。
在Master配置文件中有一段Pillar settings选项专门定义Pillar相关的一些参数:
[root@wyt1 ~]# vim /etc/salt/master
#pillar_roots:
# base:
# - /srv/pillar
默认Base环境下Pillar的工作目录在/srv/pillar目录下。若你想定义多个环境不同的Pillar工作目录,只需要修改此处配置文件即可。
Pillar的特点:
- 可以给指定的minion定义它需要的数据
- 只有指定的人才能看到定义的数据
- 在master配置文件里设置
查看pillar的信息
[root@wyt1 ~]# salt '*' pillar.items
wyt1:
----------
默认pillar是没有任何信息的,如果想查看信息,需要在 master 配置文件上把 pillar_opts的注释取消,并将其值设为 True。
[root@wyt1 ~]# vim /etc/salt/master
pillar_opts: True
//重启master并查看pillar的信息
[root@wyt1 ~]# systemctl restart salt-master
[root@wyt1 ~]# salt '*' pillar.items
wyt1:
----------
master:
----------
__cli:
salt-master
__role:
master
allow_minion_key_revoke:
True
archive_jobs:
False
auth_events:
True
auth_mode:
1
.....
pillar自定义数据:
修改存放pillar的位置
[root@wyt1 ~]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar/base
prod:
- /srv/pillar/prod
test:
- /srv/pillar/test
-
[root@wyt1 ~]# tree /srv/pillar/
/srv/pillar/
├── base
├── prod
└── test
创建pillar存放目录并重启
[root@wyt1 ~]# mkdir -p /srv/pillar/{base,prod,test}
[root@wyt1 ~]# systemctl restart salt-master
自定义pillar信息
[root@wyt1 ~]# cat /srv/pillar/base/apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% endif %}
定义top file入口文件
[root@wyt1 ~]# cat /srv/pillar/base/top.sls
base: //指定环境
'*': //指定目标
- apache //引用apache.sls
查看pillar信息
[root@wyt1 ~]# salt '*' pillar.items
wyt1:
----------
apache:
httpd
在salt下修改apache的状态文件,引用pillar的数据
[root@wyt1 ~]# vim /srv/salt/base/web/apache/install.sls
apache-install:
pkg.installed:
- name: {{ pillar['apache'] }}
[root@wyt1 ~]# cat /srv/salt/base/top.sls
base:
'os:CentOS':
- match: grain
- web.apache.install
执行高级状态文件
[root@wyt1 ~]# salt '*' state.highstate
wyt1:
----------
ID: apache-install
Function: pkg.installed
Name: httpd
Result: True
Comment: The following packages were installed/updated: httpd
Started: 09:22:16.502396
Duration: 9360.523 ms
Changes:
----------
httpd:
----------
new:
2.4.6-67.el7.centos
old:
httpd-tools:
----------
new:
2.4.6-67.el7.centos
old:
Summary for wyt1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 9.361 s
查看是否安装
[root@wyt1 ~]# rpm -qa|grep httpd
httpd-2.4.6-67.el7.centos.x86_64
httpd-tools-2.4.6-67.el7.centos.x86_64
Grains与Pillar的区别
名称 | 存储位置 | 类型 | 采集方式 | 应用场景 |
---|---|---|---|---|
Grains | minion | 静态 | minion启动时采集 可通过刷新避免重启minion服务 | 1.信息查询 2.在命令行下进行目标匹配 3.在top file中进行目标匹配 4.在模板中进行目标匹配 |
Pillar | master | 动态 | 指定,实时生效 | 1.目标匹配 2.敏感数据配置 |