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的区别