架构师成长之路5.7-Saltstack数据系统
1. Saltstack的两种数据系统
- Grains
- Pollars
2. Saltstack数据系统---Grains
- Grains是SaltStack minions启动时收集的有关底层管理系统的静态信息。包括操作系统版本、域名、IP地址、内存、内核、CPU、操作系统类型以及许多其他系统属性。Minion 收集的信息,可以作为Master端匹配目标。
- 如果需要自定义grains,需要添加到Salt Minion的/etc/salt/grains文件中(配置文件中定义的默认路径),也可以直接写在配置文件/etc/salt/minion中。
应用场景:
- 用于信息查询,grains保存收集到的客户端的详细信息
- 在state中使用 用于配置管理模块
- 在target中使用,用来匹配minion,例如匹配操作系统使用-G的选项
1)资产管理,信息查询
salt '*' grains.ls #列出所有可用的grains状态模块 salt '*' grains.items #打印所有状态信息 salt '*' grains.item fqdn_ip4 #列出每台minion的本地IP地址 salt '*' grains.item os #列出每台minion的操作系统
Saltstack01: ---------- SSDs: biosreleasedate: 07/02/2015 biosversion: 6.00 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 - arch_perfmon - pebs - bts - nopl - xtopology - tsc_reliable - nonstop_tsc - aperfmperf - eagerfpu - 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 - epb - fsgsbase - tsc_adjust - bmi1 - avx2 - smep - bmi2 - invpcid - xsaveopt - dtherm - arat - pln - pts cpu_model: Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz cpuarch: x86_64 disks: - sda - sr0 dns: ---------- domain: ip4_nameservers: - 172.18.50.25 - 172.18.50.20 ip6_nameservers: nameservers: - 172.18.50.25 - 172.18.50.20 options: search: - sortlist: domain: fqdn: Saltstack01 fqdn_ip4: - 172.18.20.226 - 192.168.122.1 - 172.18.20.42 fqdn_ip6: - fe80::30fd:662a:f719:3852 fqdns: gid: 0 gpus: |_ ---------- model: SVGA II Adapter vendor: vmware groupname: root host: Saltstack01 hwaddr_interfaces: ---------- ens33: 00:0c:29:0c:45:c8 lo: 00:00:00:00:00:00 virbr0: 52:54:00:08:6d:90 virbr0-nic: 52:54:00:08:6d:90 id: Saltstack01 init: systemd ip4_gw: 172.18.20.1 ip4_interfaces: ---------- ens33: - 172.18.20.42 - 172.18.20.226 lo: - 127.0.0.1 virbr0: - 192.168.122.1 virbr0-nic: ip6_gw: False ip6_interfaces: ---------- ens33: - fe80::30fd:662a:f719:3852 - 172.18.20.226 lo: - ::1 virbr0: virbr0-nic: ip_gw: True ip_interfaces: ---------- ens33: - 172.18.20.42 - fe80::30fd:662a:f719:3852 - 172.18.20.226 lo: - 127.0.0.1 - ::1 virbr0: - 192.168.122.1 virbr0-nic: ipv4: - 127.0.0.1 - 172.18.20.42 - 172.18.20.226 - 192.168.122.1 ipv6: - ::1 - fe80::30fd:662a:f719:3852 kernel: Linux kernelrelease: 3.10.0-862.el7.x86_64 kernelversion: #1 SMP Fri Apr 20 16:44:24 UTC 2018 locale_info: ---------- defaultencoding: UTF-8 defaultlanguage: en_US detectedencoding: UTF-8 timezone: PST localhost: Saltstack01 lsb_distrib_codename: CentOS Linux 7 (Core) lsb_distrib_id: CentOS Linux machine_id: 96e87d6c29564227b42c4fae2f5577fa manufacturer: VMware, Inc. master: 172.18.20.226 mdadm: mem_total: 974 nodename: Saltstack01 num_cpus: 1 num_gpus: 1 os: CentOS os_family: RedHat osarch: x86_64 oscodename: CentOS Linux 7 (Core) osfinger: CentOS Linux-7 osfullname: CentOS Linux osmajorrelease: 7 osrelease: 7.5.1804 osrelease_info: - 7 - 5 - 1804 path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin pid: 5662 productname: VMware Virtual Platform ps: ps -efHww pythonexecutable: /usr/bin/python pythonpath: - /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/lib64/python2.7/site-packages/gtk-2.0 - /usr/lib/python2.7/site-packages pythonversion: - 2 - 7 - 5 - final - 0 saltpath: /usr/lib/python2.7/site-packages/salt saltversion: 2019.2.2 saltversioninfo: - 2019 - 2 - 2 - 0 selinux: ---------- enabled: True enforced: Permissive serialnumber: VMware-56 4d 25 6d 08 a4 97 06-21 73 df ca ed 0c 45 c8 server_id: 381460858 shell: /bin/sh swap_total: 2047 systemd: ---------- features: +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN version: 219 uid: 0 username: root uuid: 6d254d56-a408-0697-2173-dfcaed0c45c8 virtual: VMware zfs_feature_flags: False zfs_support: False zmqversion: 4.1.4
2)远程执行中用于匹配目标
3)在top file里面使用匹配
在所有系统是centos的操作系统上面执行web.apache。
4)配合模板进行判断 (一般在pollars中使用)
自定义Grains:
第一种方法:在/etc/salt/minion文件中定义(不推荐)
如上格式修改配置:
grains: roles: - webserver - memcache ipaddr: - 192.168.1.32
重启服务:
systemctl restart salt-minion
测试:
salt -G 'ipaddr:192.168.1.32' test.ping
第二种方法:重新定义一个,在minion机器上面创建 /etc/salt/grains
有一个办法不用重启服务就可以使用grains,采用saltutil.sync_grains 重新获取grains。
3. Saltstack数据系统---Pollar
- Pillar是动态的,Pillar存储在master上,提供给minion(Pillar在master上面配置)。
- Pillar主要记录一些加密信息,可以确保这些敏感数据不被其他minion看到。比如:软件版本号、用户名密码等。存储格式都是YAML格式。
默认pillars 是没有的,但是系统默认是存在pillars,只是没有开启而已。
开启系统默认pillars。 将/etc/salt/master中pillar_opts:False 改成vpillar_opts:True。
1)在Master
端定义Pillar
vim /etc/salt/master
pillar_roots: base: - /srv/pillar/base prod: - /srv/pillar/prod
mkdir -p /srv/pillar/{base,prod} #创建目录
systemctl restart salt-master # 重启服务
2345789-
{% if grains['os'] == 'CentOS' %} apache: httpd {% elif grains['os']} == 'Debian' %} apache: apache2 {% endif %}
2)编写TopFile指定Minion端可以使用
vim /srv/pillar/base/top.sls