• Saltstack数据系统

分为Grains和Pillar

一、Grains

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

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

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地址

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

例:

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

3)配置管理中使用

自定义grains的item

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

重启 systemctl restart salt-minion

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

salt '*' grains.item roles  # 获取所有主机的roles
salt -G 'roles:apache' 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

grains在top FILE中的使用案例

vim /srv/salt/top.sls

base:
'linux-node1.example.com':
- web.apache
'roles:apache':
- match: grain
- web.apach

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

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

脚本名:my_grains.py

#!/usr/bin/env python
#-*- coding: utf-8 -*- def my_grains():
# 初始化grains字典
grains = {}
# 设置字典中的key-value
grains['iaas'] = 'openstack'
grains['edu'] = 'shhnwangjian'
# 返回字典
return grains

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

salt '*' saltutil.sync_grains

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

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

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

二、Pillar

动态数据,给特定的minion指定特定的数据。只有指定的minion自己能看到自己的数据。

salt '*' pillar.items

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

vim /etc/salt/master

重启systemctl restart salt-master

执行salt '*' pillar.items 可以看到系统自带的item

piller存在文件路径设置

mkdir /srv/pillar

重启systemctl restart salt-master

实现pillar流程

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

mkdir /srv/pillar/web
cd /srv/pillar/web
vim apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}

2)创建TOP FILE文件

vim /srv/pillar/top.sls
base:
'linux-node2.example.com':
- web.apache
salt '*' saltutil.refresh_pillar  # 刷新
salt '*' pillar.items apache

目标选择

salt -I 'apache:httpd' test.ping

三、Grains VS Pillar

最新文章

  1. 设计模式学习起点 UML类图笔记
  2. HPU周赛题目解析
  3. 开机启动遇到grub rescue,无法启动系统解决方法
  4. windows下搭建tensorflow的环境
  5. Normalize.css源码注释翻译&浏览器css兼容问题的理解
  6. SDK是什么?什么是SDK
  7. 二十五、Hadoop学记笔记————Hive复习与深入
  8. Linux相关学习笔记-文件系统
  9. ORA-12537: Network Session: End of file
  10. 简述我理解的C#
  11. Laravel--查询构造器 方法 及聚合函数
  12. iOS 图像处理(一):获取某一点位置的像素
  13. sublime text3 插件的安装
  14. conda 安装多个版本的python
  15. 10进制 VS 2进制
  16. navicat下创建和执行存储过程
  17. 使用docker搭建公司redmine服务器
  18. IDEA 码云 安装
  19. 通过ftp同步服务器文件:遍历文件夹所有文件(含子文件夹、进度条);简单http同步服务器文件实例
  20. Loadrunner视频教程汇总

热门文章

  1. SqlServer导入数据到MySql
  2. C 语言学习的第 03 课:你的 idea 是怎么变成能够执行的程序的
  3. DLL编写教程
  4. windows 内部预览版与迅雷极速版不配合
  5. 【JavaEE企业应用实战学习记录】getConnListener
  6. python基础_制作多级菜单_(运用:字典_列表_元组等知识)
  7. react.js 之 批量添加与删除功能
  8. hdu4725最短路变形 添加点
  9. mysql查看数据库
  10. bzoj4400: tjoi2012 桥