6、grains使用以及cmd.runnode
grains.items主要用来收集minion端的信息,方便进行信息采集,后续的pillar使用,根据硬件信息自动匹配配置文件等,基本用法:shell
#salt “*” grains.ls #显示全部minion的item安全
#salt “*” grains.items #显示全部minion的item值session
#salt “*” grains.item osshell #显示os的相关信息,若是多个item,用空格分隔ssh
除了salt自带的items能够获取到系统信息以外,咱们还可使用shell命令,咱们能够借助salt另外一个强大的命令:cmd.run,假如咱们须要获取minion端的内存信息ide
#salt “*” cmd.run “free-m”ui
若是想要在minions执行脚本程序,可使用cmd.script命令加密
#salt “*” cmd.scriptsalt://test.shspa
其中salt://test.sh是脚本的存放路径操作系统
7、states文件
salt states的核心是sls文件,该文件使用YAML语法定义了一些K/V的数据,sls文件存放路径在master配置文件中定义,默认为/srv/salt,若是目录不存在,则手动建立,在salt中能够经过salt://代替根路径,例如,能够经过salt://top.sls访问/srv/salt/top.sls,在states中top文件也由master配置文件定义,默认为top.sls,该文件为states的入口文件。
一个简单的top.sls文件以下
base:
"*": #匹配全部minion主机
- httpd #定义state.sls的名字
minion: #经过分组名匹配,必需要定义match:nodegroup
- match:nodegroup
- httpd
"os:CentOS": #经过grains模块匹配,必需要定义match:grain
- match:grain
- httpd
接下来咱们就能够编写httpd.sls文件了(注意每行的缩进和空格,缩进为2个空格,冒号后面一个空格)
httpd: #ID说明,表示能够被操做的名字
pkg: #包管理
- name: httpd #包的名称
- installed #包的状态(installed:安装;remove:卸载)
service: #服务管理
- name: httpd #服务名称
- running #服务状态
- reload: True #是否容许reload
- require: #依赖关系
- pkg: httpd
- watch: #监测是否发生改变
- file:/etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf: #定义文件
file:
- managed #文件管理
- source: salt://httpd.conf #源文件路径
- user: root #文件属主
- group: root #文件属组
- mode: 644 #文件权限
- backup: minion #更改前备份
强制执行下httpd.sls
[root@master salt]# salt"*" state.sls httpd
state的逻辑关系:
include: 包含某个文件,例如,我新建一个test.sls,就能够继承httpd相关配置而没必要从新编写
match: 匹配某个模块 ,好比 以前定义top.sls时候的 match:grain match: nodegroup
require: 依赖某个state,在运行此state前,先运行依赖的state,依赖能够有多个 好比文中的httpd模块内,相关的配置必需要先依赖httpd的安装
watch: 在某个state变化时运行此模块,文中的配置,相关文件变化后,当即执行相应操做
order: 优先级比require和watch低,有order指定的state比没有order指定的优先级高
8、pillar的定义及使用
Pillar是Salt很是重要的一个组件,它用于给特定的minion定义任何你须要的数据,这些数据能够被Salt的其余组件使用。这里能够看出Pillar的一个特色,Pillar数据是与特定minion关联的,也就是说每个minion都只能看到本身的数据,因此Pillar能够用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。另外还能够在Pillar中处理平台差别性,好比针对不一样的操做系统设置软件包的名字,而后在State中引用等。
默认状况下,master配置文件中的全部数据都添加到pillar中,且对全部minion可用,在master的配置文件中咱们须要配置下,若是/srv/pillar目录不存在则手动建立,和state同样,pillar也是须要一个top.sls文件做为一个入口,用来指定对象,配置方式与state同样
编辑top.sls文件
base:
"*":
- test
编辑test.sls文件
test_path: "salt://httpd.conf"
test_user: root
test_group: root
能够在state文件中引用pillar数据
/etc/httpd/conf/httpd.conf:
file:
- managed
- source: {{ pillar['test_path'] }}
- user: {{ pillar['test_user'] }}
- group: {{ pillar['test_group'] }}
咱们还能够在pillar中加入判断条件,这里就很少说了,
更多高级用法请参考官网文档中文地址:http://docs.saltstack.cn/zh_CN/latest/