博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
saltstack grains与pillar使用和订制
阅读量:6469 次
发布时间:2019-06-23

本文共 2813 字,大约阅读时间需要 9 分钟。

一、grains与pillar简介  

        grains是minion启动时加载,在minion运行过程中不会发生变化,所以是静态数据。grains数据的定制可以在各minion端,也可以放在master端;grains中包含许多的信息,如:运行的内核版本,操作系统,网络接口地址,MAC地址,cpu,内存等等信息。

Pillar是Salt用来分发全局变量到所有或指定minion的一个定制接口,所以相对grains来说可以称为动态的数据,保存在master端。

由于涉及的配置文件采用yaml格式,如果对yaml语法不在熟悉请访问这里

最好也了解下jinjia2的格式,如不熟悉请访问这里

 

saltstack的安装部署请看这里

http://dyc2005.blog.51cto.com/270872/1967147


二、grains日常使用入门

1、获取minion的grains所有数据

1
salt 
"minion_152" 
grains.items
1
类似如图:

2、获取单项grains值

1
#salt "minion_152" grains.item os

如图:

3、获取grains中的所有项(键)

1
#salt "minion_152" grains.ls     #以minion_152上的为例

这样就可通过grains.item  项去获取具体对应的值啦

4、在minion上订制grains数据

订制grains数据有两种方法分别如下:

方法一:

     修改/etc/salt/minion配置文件去掉12行左右的注释

     default_include: minion.d/*.conf

在/etc/salt/minion.d目录下

创建一个test.conf 内容如下:

1
2
3
4
5
grains:               
   
Data:
      
test
   
Project:
      
- wgdbl_game

重启minion

1
#salt "minion_152" grains.items

如图:

方法二:

在master操作

1
2
3
mkdir 
-pv 
/srv/salt/_grains
cd  
/srv/salt/_grains
cat 
hello.py
1
2
3
4
5
6
#!/usr/bin/python
def 
GrainsHello():    
    
grains 
= 
{}
    
grains[
"project"
= 
"myTestProject"
    
grains[
"name"
= 
"san game"   
    
return 
grains

在服务端写好脚本再同步刷新到指定minion

1
#salt "minion_152" saltutil.sync_grains

如图:

推送更新成功。

此时到minion_152所在的机器

/var/cache/salt/minion/files/base/_grains/会发现 在master端创建的hello.py grains脚本已经推送至此,如图:

并且在该minion下的

/var/cache/salt/minion/extmods/grains 下有执行的标记生成了hello.pyc

第一种方法是grains中的纯静态指定minion下生成并且要重启minion生效,第二种方法可以统一放在胳端管理,再推送到各指定minions 动态生成管理。

三、pillar的使用

1、获取指定minion上pillar的数据

首先与grains不同的是要获取pillar需要在master的配置文件中打开

取消552行的注释如下:

pillar_opts: True

并重启salt-master

1
2
#salt  "minion_152" pillar.data
如图:

注意:最好不要在线上使用 salt "*" pillar.data   这想会卡的哦。

2、pillar数据定制

配置master的pillar的根目录

取消529 -532 的注释

1
2
3
529 pillar_roots:
530   base:
531     - 
/srv/pillar

创建根目录

mkdir -pv /srv/pillar

重启salt-master

切换到/srv/pillar目录

创建pillar顶层入口文件(相当于目录)top.sls,注意必须要以sls后缀。

1
2
3
4
cat 
top
.sls
base:   
"*"
:      
   
- data   
"minion_152"
:
   
- minion152

创建 data.sls

cat data.sls

1
2
3
4
project_name: san
subject:
   
- 
zgws
   
- 
wgdbl

创建 minion152.sls

cat minion152.sls

1
2
3
4
5
6
7
Minion_152: info
HostName:
   
- 
zgws_game01
IP:
   
- 
172.16
.
3.152
game:
   
- 
zgws

向minion同步pillar数据

1
#salt "minion_152" saltutil.refresh_pillar

  如图:

查看minion_152 pillar数据

1
2
3
#salt "minion_152" pillar.data
#salt "minion_152" pillar.items

如图:

由于只对minion_152进行推送更新pIllar 因此其他的minion不会收到更新。

3、pillar配置文件中增加jinjia2格式的判断

cat top.sls

1
2
3
4
5
6
base:
   
"*"
:
      
- 
data
   
"minion_152"
:
      
- 
minion152
      
- 
osinfo

创建osinfo.sls

cat osinfo.sls

1
2
3
4
5
OS_INFO:
    
- 
{
{ grains.os}}
    
{
% 
if 
grains[
"os"
=
= 
"CentOS"
%
}
    
- 
Linux System
    
{
% 
endif 
%
}

刷新pillar数据

1
#salt "minion_152" saltutil.refresh_pillar

查看minion_152 pillar数据

如图:

通过grains和pillar可以很方便的定制出特定的数据,pillar 配置是完全保存在master端的,而grains既可以保存在master端也可以单独至minion端,每次修改需要重启minion端。pillar偏向敏感数据的统一存放在master端且灵活修改。

本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1967804,如需转载请自行联系原作者
你可能感兴趣的文章
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
Spring Boot 2.0将会增强Actuator端点的特性
查看>>
i4o开源项目增强LINQ索引功能
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
使用Akka Actor和Java 8构建反应式应用
查看>>
curl常用命令详解
查看>>
saltstack 添加计划任务
查看>>
Puppet module命令参数介绍(六)
查看>>
《UNIX网络编程》中第一个timer_server的例子
查看>>
CISCO 路由器(4)
查看>>
网络服务搭建、配置与管理大全(Linux版)
查看>>
Silverlight 5 Beta新特性[4]文本缩进控制
查看>>
springMVC多数据源使用 跨库跨连接
查看>>
简单java在线测评程序
查看>>
录音和朗诵的实现
查看>>
Git服务端和客户端安装笔记
查看>>
Spring Security(14)——权限鉴定基础
查看>>
IntelliJ IDEA快捷键
查看>>