Grains组件
Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu、内存、磁盘、网络信息等,可以通过grains.items查看某台minion的grains所有信息,minion的grains信息是minion启动的时候采集汇报给master的。
grains会在minion进程启动时进行加载,并缓存在内存中。这样salt-minion进程无需每次操作都要重新检索系统来获取grain,提升了minion性能。
grains相关命令用法可用sys.list_functions grains来查看,详细用法可用sys.doc grains.items查看:
grains的定义:
通过minion配置文件定义
通过grains相关模块定义
通过python脚本定义
通过minion配置文件定义grains:
在配置文件中有默认的注释行,修改好配置文件重启minion服务
在master上通过salt 'minion-01' grains.item roles和salt 'minion-01' grains.item deployment就可查看刚才定义的grains值。
通过grains模块来设置并定义grains信息:
salt 'minion-01' grains.append sufe 'beauty'
salt 'minion-01' grains.setvals "{'salt': 'good','book': 'cool'}" #设置多对
salt 'minion-01' grains.item sufe #查看所定义的grains信息
现在都是将自定义的静态grain存在一个grain文件中(/etc/salt/grains),这样grains独立存储,易于在本地查找。能够通过执行模块进行修改。
Pillar组件
Pillar是数据管理中心,主要作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户密码等信息,格式与grains类似,都是YAML格式。
Pillar也是Salt用来分发全局变量到所有minions的一个接口。安全起见,有些数据是不可以共享出来的,需要指定。比如高度敏感的数据:通过pillar传输的数据会保证只向选定的minions展现,这使得pillar可以作为Salt中管理安全信息的引擎,比如加密的key和密码。
通过master配置文件定义Pillar相关参数:
pillar_roots:
base:
- /srv/pillar
此处pillar工作目录为/srv/pillar。定义多个环境不同的pillar工作目录,去pillar工作目录新建top.sls文件然后引用两个sls文件即可。
grains和pillar比较:
1.grains存储的是静态数据、不常变化的内容,pillar则相反
2.grains是存储在minion本地,而pillar存储在master本地
3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改
后续再补充。