saltstack(十):saltstack数据系统-grains和pillar

 saltstack数据系统-grains和pillar

https://www.cnblogs.com/shhnwangjian/p/5985868.html

1.1         granis

Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息。
Grains是服务器的一系列粒子信息,也就是服务器的一系列物理,软件环境信息。在执行salt的sls时候可以根据Grains信息的不同对服务器进行匹配分组,例如可以根据系统是centos服务器跟系统是redhat环境的安装不同的软件包。

 

负责minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。每次的minion启动(重启)的时候都会采集。


Grains功能:1.收集资产信息 2.信息查询
官方文档:https://docs.saltstack.com/en/getstarted/overview.html

 

静态数据,当Minion启动的时候收集的MInion本地的相关信息。(包含操作系统版本、内核版本、CPU、内存、硬盘、设备型号等)

备注:不重启minion,这些信息数据是不会改变的。

1.1.1     信息管理,包括资产管理;

salt 'linux-node1*' grains.ls  # 列出ID为linux-node1的主机,grains的所有key
salt 'linux-node1*' grains.items  # 列出主机的详细信息,可用于资产管理
salt '*' grains.item os  # 列出所有主机的系统版本
salt '*' grains.item fqdn_ip4  # 列出所有主机的IP地址

1.1.2     用于目标选择;(查询具体id的主机,查询系统版本为centos的主机 等场景)

salt -G 'os:Centos' test.ping  # 所有主机系统为centos版本ping测试
salt -G 'os:Centos' cmd.run 'echo 123'  # 所有主机系统为centos版本执行命令'echo 123'

 

1.1.3     配置管理中使用—自定义grains的item

方式一: minion端修改配置文件 vim /etc/salt/minion

重启 systemctl restart salt-minion

通过自定义的item,可以实现重启所有角色为HTTPD的主机

salt 'test*' grains.item roles  # 获取所有主机的roles
salt -G 'roles:HTTPD' cmd.run 'systemctl restart httpd'  # 所有主机roles为apache的执行命令systemctl restart httpd

 

方式二:(生产环境使用) 

修改配置文件 vim /etc/salt/grains,写法

cloud: openstack
重启 systemctl restart salt-minion

salt '*' grains.item cloud  # 获取所有主机的cloud

修改/etc/salt/grains不重启服务的方法,刷新命令如下(备注:方式一和方式二修改配置文件,通过此命令都可以不用重启服务)

salt '*' saltutil.sync_grains

 

1.1.4    grains在top FILE中的使用案例

配置

#vim /srv/salt/top.sls
base:
#  'test-tms':
#    - web.lnmp
  'role:HTTPD':
    - match:grain    #声明使用grains
    - web.lnmp

grains脚本目录,必须是base下创建_grains目录(如:/srv/salt/base/_grains)

创建一个python脚本在/srv/salt/_grains目录下

脚本名:my_grains.py

通过master同步脚本文件至每台minion

 

文件放在minion主机的/var/cache/salt/minion/extmods/grains目录下

测试

1.1.5       grains优先级

(item名称相同的情况下): 1. 系统自带 2. grains文件写到 3. minion配置文件写的 4. 自己写的脚本

1.2         pillar

Pillar是动态的,Pillar存储在master上,提供给minion
Pillar主要记录一些加密信息,可以确保这些敏感数据不被其他minion看到。比如:软件版本号、用户名密码等。存储格式都是YAML格式。

Pillar是动态的,Pillar存储在master上,提供给minion
Pillar主要记录一些加密信息,可以确保这些敏感数据不被其他minion看到。比如:软件版本号、用户名密码等。存储格式都是YAML格式

开启系统自带,修改配置文件

vim /etc/salt/master

 

重启

sudo systemctl restart salt-master

执行salt '*' pillar.items 可以看到系统自带的item,当然最初是空的

 

实现pillar流程

1)创建一个piller文件,python jinja2写法

 

###install.sls
{% if grains['fqdn'] == 'test-tms' %}
webserver: httpd
{% elif grains['fqdn'] == 'test-mall' %}
webserver: nginx
{% else %}
webserver: NOT-httpd-nginx
{% endif %}

##top.sls
base:
  'test*':
    - web.install

测试

刷新

salt '*' saltutil.refresh_pillar  # 刷新

显示item

salt '*' pillar.items webserver

 

根据设置key值显示item

salt 'test*' pillar.items webserver

目标选择

salt -I 'webserver:nginx' test.ping

 

 

1.3         grains和pillar结合jinja模板

https://www.cnblogs.com/wangxu01/articles/10974696.html

1.4         grains和pillar的区别

 

posted on 2019-06-04 17:30  光阴8023  阅读(526)  评论(0编辑  收藏  举报