实时管理
cmd.run的方式
执行命令
sudo salt '*' cmd.run 'uptime'
系统模块
系统自建的模块 参考salt文档 http://docs.saltstack.com/en/latest/ref/modules/all/index.html
例如查看minion的磁盘使用率,使用disk模块的usage函数
sudo salt '*' disk.usage
使用sys.doc模块查询salt模块的相关使用方法。sys.doc 相当于系统的man,可以查询salt模块的在线doc
sudo salt '*' sys.doc disk
自定义模块
自定义模块的目录/srv/salt/_modules/
,自定义模块路径一般为/srv/salt/_modules/custom.py
。 示例:
$cat /srv/salt/_modules/custom.py def test():return'i am test'
手动同步模块到minion
sudo salt '*' saltutil.sync_modules
执行模块
sudo salt '*' custom.test
Targetting
简单方式的匹配:Shell Style & Perl 正则匹配
模式 | 含义 |
* | 匹配所有minion |
web1 | 匹配web1 |
web* | 匹配web开头的minion |
web? | 匹配web开头4个字符ID的minion |
web[1-5] | 匹配web1到web5 |
web[1,3] | 匹配web1和web3 |
web1-(prod|devel) | 匹配web1-prod和web1-devel |
列表匹配
sudo salt -L 'web1,web2' test.ping
Grains匹配
sudo salt -G 'virtual:physical' test.ping #匹配所有物理机 sudo salt -G 'virtual:phy*' test.ping #grains匹配方式中同样可以使用 Shell Style & Perl正则方式
Pillar匹配
sudo salt -I 'master:ipv6:False' test.ping
SLS文件中的匹配方式
'virtual:physical':- match: grain
States
states用于实现对minion进行状态管理,官方参考文档 http://docs.saltstack.com/ref/states/all/index.html
states 定义路径/src/salt
(在/etc/salt/master中的file_roots变量定义),states文件使用YAML格式定义
states文件的后缀是sls(Salt State),sls文件编写需要注意在:之后要保留一个空格,否则会导致解析错误
手动执行state的方式,以修改admin账号的bashrc为例
准备/src/salt/bashrc.sls
,内容如下
/home/admin/.bashrc: file.managed:- source: salt://files/bashrc- user: admin -group: admin - mode:644
准备好用于分发的bash文件,salt://files/bashrc
对应/srv/salt/files/bashrc
使bash.sls生效
sudo salt '*' state.sls 'bashrc'
Highstate的方式。其实是使用top.sls作为state的入口文件
/src/salt/top.sls文件如下,top.sls引用bashrc.sls
base:'*':- bashrc
手动执行highstate生效
sudo salt '*' state.highstate
使用schedule 让minion自动执行highstate
定义 /srv/pillar/top.sls
base:'*':- schedule
定义 /srv/pillar/schedule.sls
(30分钟为单位)
schedule: highstate:function: state.highstate minutes:30
Pillar
官方文档 http://docs.saltstack.com/topics/tutorials/pillar.html
pillar数据定义路径/srv/pillar
, 入口文件:/srv/pillar/top.sls
查看pillar信息
sudo salt '*' pillar.data
Grains
官方文档 http://docs.saltstack.com/topics/targeting/grains.html
查看grains分类
sudo salt '*' grains.ls
查看grains所有信息
sudo salt '*' grains.items
查看grains某个信息
sudo salt '*' grains.item osrelease
自定义grains
grains自定义目录/srv/salt/_grains/
,自定义路径/srv/salt/_grains/grans_test.py
,示例:
def grans_test(): grains ={} grains['grans_test']='this is a grans test!'return grains if __name__ =='__main__':print grans_test()
同步grains
sudo salt '*' saltutil.sync_grains
查看机器grains信息
sudo salt '*' grains.item grans_test
Job管理
Salt实时管理的任务都是作为Job来执行
查看正在执行的Job
sudo salt-run jobs.active
查看Job列表(包括执行过的)
sudo salt-run jobs.list_jobs
查看指定Job的状态
sudo salt-run jobs.lookup_jid 20140408112045976162
Minion状态管理
查看minion的状态up or down
sudo salt-run manage.status #查看所有状态 sudo salt-run manage.up #只看up的 sudo salt-run manage.down #只看down的
查看minion的版本,该命令会提示哪些minion的版本需要升级
sudo salt-run manage.versions