什么是grains,以前也有所研究,知道它是记录minion的一些静态信息的,比如CPU,内存,磁盘等等。还可以自定义一些grains,我们下面研究研究。
需要知道的是所有的grains信息是由Minion在启动时采集完成后汇报给Master的,来先看看grains如何使用的。
离线文档
[root@localhost pki]# salt '*' sys.doc
[root@localhost pki]# salt '*' sys.doc grains | more
grains用法
[root@localhost ~]# salt '*' sys.list_functions grains
client1.roddypy.com:
- grains.append 新增一个grains信息 key values
- grains.delval 从配置文件中删除一个grains(感觉像设置为NONE)
- grains.filter_by
- grains.get 查询一个字典中的字典信息(没有就返回空)
- grains.get_or_set_hash
- grains.has_value
- grains.item 返回一个或多个grains信息 ( salt '*' grains.item os osrelease oscodename)
- grains.items 列出所有的grains信息
- grains.ls 列出所有的grains key
- grains.remove 移除一个grains的values信息
- grains.setval
- grains.setvals
[root@localhost ~]#
列出所有minion的grains信息
[root@localhost pki]# salt '*' grains.items
client1.roddypy.com:
----------
SSDs:
biosreleasedate:
03/10/2018
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
- up
- arch_perfmon
- pebs
- bts
- xtopology
- tsc_reliable
- nonstop_tsc
- aperfmperf
- unfair_spinlock
- pni
- pclmulqdq
- ssse3
- fma
- cx16
- pcid
- sse4_1
- sse4_2
- x2apic
- movbe
- popcnt
- aes
- xsave
- avx
- f16c
- rdrand
- hypervisor
- lahf_lm
- ida
- arat
- epb
- xsaveopt
- pln
- pts
- dts
- fsgsbase
- smep
cpu_model:
Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
cpuarch:
x86_64
domain:
fqdn:
fqdn_ip4:
fqdn_ip6:
gpus:
|_
----------
model:
SVGA II Adapter
vendor:
unknown
host:
hwaddr_interfaces:
----------
eth0:
00:0c:29:b7:74:7b
lo:
00:00:00:00:00:00
id:
client1.roddypy.com
init:
.....................
[root@localhost pki]#
只查看其中部分grains信息
[root@localhost ~]# salt '*' grains.item pythonexecutable shell
client1.roddypy.com:
----------
pythonexecutable:
/usr/bin/python2.7
shell:
/bin/bash
[root@localhost ~]#
自定义grains信息
- 新建一个client minion的配置文件
[root@localhost minion.d]# vim roddypy.conf (默认文件格式是YAML格式)
grains:
Username: roddy
Server_business: Nginx,WEB site
Soft:
- nginx-1.11.1
- mysql-5.6
- php
- memcache
Discription: install date 2018/3/10
[root@localhost minion.d]# systemctl restart salt-minion
Stopping salt-minion daemon: [确定]
Starting salt-minion daemon: [确定]
[root@localhost minion.d]#
- 在master中查看我们自定义的grains
[root@localhost ~]# salt '*' grains.items
client1.roddypy.com:
----------
Discription:
install date 2018/3/10
SSDs:
Server_business:
Nginx,WEB site
Soft:
- nginx-1.11.1
- mysql-5.6
- php
- memcache
Username:
roddy
- 只查看自定义的grains信息
[root@localhost ~]# salt '*' grains.item Soft Username
client1.roddypy.com:
----------
Soft:
- nginx-1.11.1
- mysql-5.6
- php
- memcache
Username:
roddy
[root@localhost ~]#
刚刚我们是通过minion中的conf文件自定义的grains,还可以通过salt grains命令来设置一个grains信息 {KEY:VALUE}
[root@localhost ~]# salt 'client1.roddypy.com' grains.append Nginx_install 'config install '
client1.roddypy.com:
----------
Nginx_install:
- config install
[root@localhost ~]# salt '*' grains.item Nginx_install
client1.roddypy.com:
----------
Nginx_install:
- config install
[root@localhost ~]#
删除grains中的values
[root@localhost ~]# salt '*' sys.doc grains | grep remove
'grains.remove:'
salt '*' grains.remove key val
:param Destructive: If an operation results in a key being removed, delete the key, too. Defaults to False.
:param Destructive: If an operation results in a key being removed, delete the key, too. Defaults to False.
[root@localhost ~]#
[root@localhost ~]# salt '*' grains.remove Nginx_install "config install"
client1.roddypy.com:
----------
Nginx_install:
[root@localhost ~]# salt '*' grains.items | grep Nginx_install
Nginx_install:
具体详细的用法参考文档
好了,我们再来看看pillar
Pillar使用
尼玛这是个什么鬼,研究了说的是这个东西主要的作用是存储和定义配置管理中需要的数据的,如
软件版本,用户名和密码等。哦哦,大概知道是怎么回事了,现在我们只是先来研究研究这个,后面在配置管理的时候要用这个东东
好吧,格式都是YAML。
来,继续
默认pillar BASE的工作目录是在/srv/pillar,可以进行修改,默认没有建立目录,如果想要多指定多个目录设置为以下方式即可 - 表示一个列表
[root@localhost ~]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
- /etc/salt/pillar
[root@localhost ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon: [确定]
Starting salt-master daemon: [确定]
[root@localhost ~]#
[root@localhost ~]# mkdir -p /etc/salt/pillar/
[root@localhost ~]# cd /etc/salt/pillar/
[root@localhost pillar]# vim top.sls 定义入口文件
base:
'*':
- packages
- services
[root@localhost pillar]#
[root@localhost pillar]# vim packages.sls
zabbix:
package-name: zabbix
version: 3.4
[root@localhost pillar]# vim services.sls
zabbix:
port: 10050
user: admin
[root@localhost pillar]#
查看刚刚我们定义的pillar,发现已经定义好了
[root@localhost pillar]# salt '*' pillar.items
client1.roddypy.com:
----------
zabbix:
----------
package-name:
zabbix
port:
10050
user:
admin
version:
3.4
好了,那我们再来定义一个nginx
[root@localhost pillar]# vim packages.sls
zabbix:
package-name: zabbix
version: 3.4
nginx:
package-name: nginx
version: 1.11.1
[root@localhost pillar]# vim services.sls
zabbix:
port: 10050
user: admin
nginx:
port: 80
user: www
usergroup: www
[root@localhost pillar]# salt '*' pillar.item nginx
client1.roddypy.com:
----------
nginx:
----------
package-name:
nginx
port:
80
user:
www
usergroup:
www
version:
1.11.1
[root@localhost pillar]#
好了,grains和pillar初步用法我们先了解到这里。可能会觉得,然并卵,其实我也觉得。呵呵,要结合配置管理才能体现它的美。