Grains VS Pillar
Grains
静态数据,当Minion启动的时候收集的MInion本地的相关信息。不重启minion,这些信息数据是不会改变的。
数据查询
列出主机的详细信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@Automation ~]# salt 192.168.* grains.items
192.168.244.130:
----------
SSDs:
biosreleasedate:
07/02/2015
biosversion:
6.00
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
- msr
- pae
- mce
......列出所有主机的系统版本:
1
2
3
4
5[root@Automation salt]# salt '*' grains.item os
192.168.244.130:
----------
os:
CentOS直接获得内容
1
2
3[root@Automation salt]# salt '*' grains.get os
192.168.244.130:
CentOS
目标选择
1 | [root@Automation salt]# salt -G 'os:Centos' test.ping |
配置管理
修改minion - /etc/salt/minion
1
2
3
4
5
6
7
8
9
10# Custom static grains for this minion can be specified here and used in SLS
# files just like all other grains. This example sets 4 custom grains, with
# the 'roles' grain having two values that can be matched against.
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15重启服务验证:
1
2
3
4
5[root@Automation salt]# salt '*' grains.item deployment
192.168.244.130:
----------
deployment:
datacenter4基于文件 - /etc/salt/grains
1
2[root@Automation salt]# cat grains
centos: minion重启服务验证:
1
2
3
4
5[root@Automation salt]# salt '*' grains.item centos
192.168.244.130:
----------
centos:
minion_grains目录自定义grain
grains脚本目录,必须是base下创建_grains目录(如:/srv/salt/_grains)
创建一个python脚本在/srv/salt/_grains目录下1
2
3
4
5
6
7
8
9
10
11
12[root@Automation _grains]# cat my_grains
#!/usr/bin/env python
#-*- coding: utf-8 -*-
def my_grains():
# 初始化grains字典
grains = {}
# 设置字典中的key-value
grains['eb'] = 'eb'
grains['add'] = 'beijing'
# 返回字典
return grains通过master同步脚本文件至每台minion
1
salt '*' saltutil.sync_grains
文件放在minion主机的/var/cache/salt/minion/extmods/grains目录下
1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@Automation salt]# tree minion
minion
├── extmods
│ └── grains
│ ├── my_grains.py
│ └── my_grains.pyc
├── files
│ └── base
│ └── _grains
│ └── my_grains.py
├── module_refresh
└── proc
6 directories, 4 files在Master上验证:
1
2
3
4
5[root@Automation salt]# salt '*' grains.item add
192.168.244.130:
----------
add:
beijing
grains优先级(item名称相同的情况下): 系统自带 > grains文件写到 > minion配置文件写的 > 自己写的脚本
Pillar
Pillar在salt中是非常重要的组成部分,利用它可以完成很强大的功能,它可以指定一些信息到指定的minion上,不像grains一样是分发到所有Minion上的,它保存的数据可以是动态的,Pillar以sls来写的,格式是键值。
文件路径设置
1 | # Salt Pillars allow for the building of global data that can be made selectively |
并创建1
mkdir /srv/pillar
创建Pillar
创建一个pillar文件
1
2
3
4
5
6
7
8
9
10[root@Automation pillar]# mkdir qa
[root@Automation pillar]# cd qa
[root@Automation qa]# ls
[root@Automation qa]# vi init.sls
[root@Automation qa]# cat init.sls
{% if grains['os'] == 'CentOS' %}
vm: vm1
{% elif grains['os'] == 'Debian' %}
vm: vm2
{% endif %}创建TOP FILE文件
1
2
3
4
5
6[root@Automation qa]# cd ..
[root@Automation pillar]# vi top.sls
[root@Automation pillar]# cat top.sls
base:
'192.168.244.130':
- qa.init验证
1
2
3
4
5
6
7
8[root@Automation pillar]# salt '*' saltutil.refresh_pillar
192.168.244.130:
True
[root@Automation pillar]# salt '*' pillar.items vm
192.168.244.130:
----------
vm:
vm1
目标选择
1 | [root@Automation pillar]# salt -I 'vm:vm1' grains.item os |