grains作用

(注:之所以叫grain,就像凳子之所以被叫做凳子,也可以从翻译中理解,它的粒度很细,就是一个名字,只要理解这个名字后面代表的东西的功能和运用方式就可以了):

在salt上存在一个接口,它被命名为grains接口;它被用于操作系统、域名、IP地址、内核、操作系统类型、内存和许多其他系统属性的搜集;

既然说这个接口会搜集系统的属性数据,那需要怎么查看呢?,命令如下:

使用grains中的模块,模块为grains.ls
grains.ls能显示出每个属性的key,而key下面的value是不显示的,
使用:grains.ls
salt '*' grains.lsgrains.items能显示每个属性的key-value对,可以显示每个key的value值
使用: grains.items
salt '*' grains.itemsgrains.item [key] 能指定显示某个key的value值,以列表形式
salt '*' grains.item uuidgrains.get [key] 能指定显示某个可以的value值,以字符串形式
salt '*' grains.get uuid

第一种情况:我要对minion的主机增加一个key-value对,那么

如果你要对某个minion主机增加一个grains标记,那么你需要到minion增加grans的相关配置信息,增加方式有两种:
1,在/etc/salt/minion文件中配置,则top-level需要是grains的key名,比如:(注意空格,建议不要用tab键)

... #三个点表示是这个文件里面还有其他内容
grains:roles:- webserver- memcachedeployment: datacenter4cabinet: 13cab_u: 14-15

2,新建一个名为grains的文件,和名为minion文件处于同目录中:在这个文件中,就可以把grains这个key去掉,如下:

roles:- webserver- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15

可以看到,所有的二级的key都变成了一级的key。

注意1:如果在名为minion的配置文件中被发现有‘grains’这个top-level的key存在,那么同目录下的名为grains的文件会被忽略,名为grains的文件中定义的所有键值对就会无效化
注意2:如果minion主机的grains值发生变化,则需要我们在master中手动执行命令,让minion主机自己去更新grains得到的信息,命令如下: salt '*' saltutil.refresh_modules   或者 salt '*' saltutil.sync_grains  或者 salt '*' saltutil.sync_all
注意3:为了配合topfile文件,建议在做grains的时候按照这种方式去做:

'roles:webserver':- match: grain- state0'roles:memcache':- match: grain- state1- state2

简单介绍一下topfile文件是什么,以及干什么用:
topfile文件名一般为top.sls,用于主机组和role的映射关系;之所以如此命名,是因为它们总是位于包含状态文件的目录层次结构的“顶部”。该目录层次结构称为状态树。后面会讲到,会有很多很多*.sls文件,这些sls文件都有层级关系的,而top.sls就是第一级文件。简要讲一下top.sls的文件结构:
Top文件有三个组成部分:
1,环境:一个状态树目录,包含一组用于配置系统的状态文件。
2,目标:一组将有一组状态应用于它们的机器。
3,状态文件:应用于目标的状态文件列表。每个状态文件描述一个或多个要在目标机器上配置和实施的状态。

这三个组成部分之间的关系: 环境包含目标,目标包含状态文件

比如如下这样:

base:          # 从名为“base”的环境中的目录根应用SLS文件'web*':      # 所有minion_id以web开头的minion机器被匹配- apache   # 应用名为'apache.sls'的状态文件

到此为止,暂不做继续分析,可以看具体详情连接:https://docs.saltstack.com/en/latest/ref/states/top.html#states-top

第二种情况,关于同名key存在的时候,grains会生效哪个的问题

在配置grains的时候,由于有多个地方可以配置,如果在grains里面配置了key-value对,且存在同名现象,那么哪个key-value对会有效就需要看覆盖优先级,官方给出的优先级覆盖存在如下规律:

1,grains自带的key-value值
2,在/etc/salt/grains中配置的key-value值
3,在/etc/salt/minion中配置的key-value值
4,在_grains目录中自定义的grains模块中的key-value值,它会同步到minion中去
以上顺序解释,2会覆盖掉1里面的同名key,value值会显示2里面的同名key的值;依次往下,会覆盖上面已配置的key的值;
值的一提的是,2和3如果都有grains配置,2内写的配置文件内的key-value对都会失效,不会被grains模块识别,即被忽略。

salt学习-grains相关推荐

  1. salt的grains工具和pillar工具使用详解

    什么是grains工具? Salt附带一接口,用于获取有关底层系统的信息.Salt的grains主要存储静态数据,用来收集minion端的一些数据,比如:操作系统,域名IP地址,内核,操作系统类型,内 ...

  2. salt 基本组建之 grains,pillars(整理中)

    2019独角兽企业重金招聘Python工程师标准>>> grains minion基本信息的管理 基本使用: <pre> salt '*' grains.ls 查看gra ...

  3. 企业运维实战--自动化运维Saltstack(上)之saltstack的安装部署、远程执行、grains和pillar详解以及Jinja模板的使用

    企业运维实战--自动化运维Saltstack(上) 前言 一.Saltstack安装部署 二.sls文件远程执行 saltstack安装httpd并启动 saltstack源码编译安装nginx 启动 ...

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

    前言 Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等, ...

  5. SaltStack实战之数据系统-Grains

    1. Grains应用场景 Grains可以在state系统中使用,用于配置管理模块. Grains可以在target中使用,用来匹配minion,比如匹配操作系统,使用-G选项. Grains可以用 ...

  6. salt常用命令(一)

    查看模块包含哪些函数 salt 'node' sys.list_functions test 查看函数的用法 salt 'node' sys.doc test.echo 使用模块中的函数 salt ' ...

  7. Saltstack grains组件

    grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...

  8. Saltstack数据系统Grains和Pillar(三)

    Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...

  9. saltstack grains

    1.什么是Grains Grains是SaltStack的一个组件,存放着minion启动时收集的底层系统的静态信息.Grains是存储在minion端的,当minion启动时,会进行Grains的采 ...

最新文章

  1. 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战
  2. sublime text 3 python开发环境配置
  3. ssl_error_rx_record_too_long
  4. 20年研发管理经验谈(十六)
  5. linux fedora设置开机自动挂载win磁盘
  6. 基于Adaboost实现鸢尾花数据集分类
  7. python字符串大全_python学习笔记:字符串操作大全
  8. Android 百度推送使用总结
  9. Dw序号列表如何通过html语言加,使用DW软件实现html编码转换的详细步骤
  10. 计算机英语讲课笔记02
  11. java 线程锁概念_Java多线程——锁概念与锁优化
  12. 谈谈运维人员谨慎操作系统环境和管理
  13. 大数据治理平台有哪些价值
  14. Java Web底层(1)
  15. 京东一面:高并发下,如何保证分布式唯一全局 ID 生成?
  16. FNV摘要HASH算法实战
  17. 中职计算机PPT触发器使用的教案,PPT 触发器微课教学设计
  18. NTFS, FAT32和exFAT文件系统有什么区别
  19. sslv3 poodle漏洞 检测解决方法
  20. Python爬虫基础之BeautifulSoup

热门文章

  1. jQuery for 循环图片列表
  2. PostgreSQL数据库系列之五:预写式日志WAL
  3. BOS初级开发培训认证(题库)
  4. uni-app和flutter的区别
  5. 二叉树的前序、中序、后序遍历
  6. 高质量科研绘图工作流
  7. 帮助客户实现自助服务,企业可以打造产品知识库来解决
  8. 如何规避MyBatis使用过程中带来的全表更新风险
  9. 智慧水务信息化建设的必要性
  10. 漫画的由来,卡通漫画、暴走漫画、先锋漫画、漫画与前卫艺术之间的边缘艺术形式、实用漫画、讽刺漫画、幽默漫画的定义...