saltsack之数据系统(三)

 

 

saltstack 数据系统有两种,Grains   pillar

 

Grains  与  Pillar  区别

             类型          数据采集方式            应用场景                                                    定义位置

Granis   静态       minion启动时采集         数据查询  目标选择  配置管理                    minion

Pillar     动态          master自定义             目标选择   配置管理   敏感数据                  master

 

 

Grains:静态数据   当minion启动收集本地信息(操作系统,内核版本,CPU,内存,硬盘,设备型号等) 只要不重启,这些数据只会收集一次

 能干什么呢?

        1         资产管理,信息查询  

         (salt 'web01' grains.items。  salt '*' grains.item fqdn_ip4 )    

        2   用于目标选择

           (salt -G 'web01:apache' cmd.run '/etc/init.d/httpd restart')

        3        配置管理中使用

 

举例  :资产管理

    停止某一个机器的apache(也可以是指定roles的服务)

        1,方法一   从minion配置文件配置(不太推荐,不好管理)

                    grains:

                      roles: apache

              重启服务

  /etc/init.d/salt-minion restar

    master端:      

salt '*' grains.item roles
web01:
----------
roles:
web02:
----------
roles:
apache

   

salt -G 'roles:apache' cmd.run '/etc/init.d/httpd stop' 
web02:
Stopping httpd: ?[60G[?[0;32m OK ?[0;39m]

 

2  方法2 创建grains(minion端)(推荐)

vim /etc/salt/grains

server: httpd

salt '*' saltutil.sync_grains  刷新(不用重启强制刷新)

salt '*' grains.item  server

web01:
----------
server:
web02:
----------
server:httpd

 

 

举例:目标选择

 vim /srv/salt/top.sls

base:
'web01':
- web.apache
'roles:apache':
- match: grain
- web.apache

 

====================开发一个grains================

mkdir /srv/salt/_grains

cd /srv/salt/_grains

vim my_grains.py

[root@web01 _grains]# vim my_grains.py
#!/usr/bin/env python
#_*_ coding: utf-8 _*_


def my_grains():
    #初始化一个grains字典
    grains = {}
    #设置字典中的值(key-value)
    grains['iaas'] = 'openstack'
    grains['edu'] = 'daxian'
    #返回这个字典
    return grains
~                     

从master端同步到minion端

 salt '*' saltutil.sync_grains
web01:
    - grains.my_grains
web02:
    - grains.my_grains

同步到minion  /var/cache/salt/minion/extmods/grains

执行以下

salt '*' grains.item iaas
web02:
    ----------
    iaas:
        openstack
web01:
    ----------
    iaas:
        openstack

 

Grians优先级:

  1.     系统自带
  2.     grains 文件写的
  3.     minion配置文件写的
  4.     自己写的

 

Pillar介绍

Pillar是动态的  给特定的minion指定特定的数据

默认是关闭的,在配置文件master里开启,一般都关闭,一般都是自己写

vim /etc/salt/master

pillar_roots:

  base:

    - /srv/pillar

#创建这个目录
mkdir /srv/pillar
cd /srv/pillar
mkdir web
cd web
#重启
/etc/init.d/salt-master restart


#编辑
vim apache.sls

{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}

 

编辑top file

cd ..

vim top.sls

base:
'web01':
- web.apache

#刷新

salt '*' saltutil.refresh_pillar

salt '*' pillar.items apache
web02:
----------
web01:
----------
apache:
httpd

 

posted @ 2018-01-09 12:20  大仙儿没溜儿  阅读(215)  评论(0编辑  收藏  举报