SaltStack自动化运维(三)——Grains与Pillar组件

前言

Grains组件

Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu、内存、磁盘、网络信息等,可以通过grains.items查看某台minion的grains所有信息,minion的grains信息是minion启动的时候采集汇报给master的。

grains会在minion进程启动时进行加载,并缓存在内存中。这样salt-minion进程无需每次操作都要重新检索系统来获取grain,提升了minion性能。

grains的定义:

  • 通过minion配置文件定义
  • 通过grains相关模块定义
  • 通过python脚本定义

Pillar组件

Pillar是数据管理中心,主要作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户密码等信息,格式与grains类似,都是YAML格式。

Pillar也是Salt用来分发全局变量到所有minions的一个接口。安全起见,有些数据是不可以共享出来的,需要指定。比如高度敏感的数据:通过pillar传输的数据会保证只向选定的minions展现,这使得pillar可以作为Salt中管理安全信息的引擎,比如加密的key和密码。


grains和pillar比较:

  • 1.grains存储的是静态数据、不常变化的内容,pillar则相反

  • 2.grains是存储在minion本地,而pillar存储在master本地

  • 3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改

一、Grains的定义

方法一:通过minion配置文件定义
1.打开server2的grains工具包

[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
120 grains:
121   roles:
122     - apache
[root@server2 salt]# systemctl restart salt-minion

在这里插入图片描述

测试查看

[root@server1 ~]# salt server2 grains.item roles			##获取对应的变量值
server2:
    ----------
    roles:
        - apache

SaltStack自动化运维(三)——Grains与Pillar组件_第1张图片

方法二:通过grains相关模块定义

1.直接写在grains文件中

[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# vim grains
[root@server3 salt]# cat grains 
roles: nginx
[root@server3 salt]# systemctl restart salt-minion.service

2.查看

[root@server1 ~]# salt server3 grains.item roles

SaltStack自动化运维(三)——Grains与Pillar组件_第2张图片


方法三:通过python脚本定义在主节点统一指定角色

[root@server1 ~]# mkdir /srv/salt/_grains
[root@server1 ~]# cd /srv/salt/_grains/
[root@server1 _grains]# vim my_grains.py
[root@server1 _grains]# cat my_grains.py 
#! /usr/bin/env python
def my_grains():
	grains = {'foo':'bar','hello':'world'}
	grains['salt'] = 'stack'
	return grains

在这里插入图片描述
查看效果

SaltStack自动化运维(三)——Grains与Pillar组件_第3张图片

在脚本中引入grains角色

[root@server1 _grains]# cd /srv/salt/
[root@server1 salt]# vim top.sls 
[root@server1 salt]# cat top.sls 
base:
  'roles:apache':
    - match: grain
    - apache.service
  'roles:nginx':
    - match: grain
    - nginx.service

[root@server1 salt]# salt server[2,3] state.highstate

SaltStack自动化运维(三)——Grains与Pillar组件_第4张图片
SaltStack自动化运维(三)——Grains与Pillar组件_第5张图片


二、pillar工具的配置

1.在主节点上开启pillar功能

[root@server1 salt]# vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar
[root@server1 salt]# mkdir /srv/pillar
[root@server1 salt]# systemctl restart salt-master

SaltStack自动化运维(三)——Grains与Pillar组件_第6张图片

2.在脚本中引入pillar角色

[root@server1 salt]# cd /srv/pillar/
[root@server1 pillar]# ls
[root@server1 pillar]# vim vars.sls	指定角色安装指定服务
[root@server1 pillar]# cat vars.sls 
{% if grains['fqdn'] == 'server2' %}	如果主机名等于server2
webserver: apache
state: master
{% elif grains['fqdn'] == 'server3' %}		如果主机名等于server3
webserver: nginx
state: backup
{% endif %}

[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - vars	执行此目录下的所有.vars脚本

测试:

[root@server1 pillar]# salt '*' pillar.items

SaltStack自动化运维(三)——Grains与Pillar组件_第7张图片
SaltStack自动化运维(三)——Grains与Pillar组件_第8张图片

你可能感兴趣的:(SaltStack)