一、saltstack的高级用法
一、job管理
1、job简介
- Jid:job id,格式为%Y%m%d%H%M%S%f
- master在下发指令消息时,会附带上产生的Jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var/cache/salt/minion/)下的proc目录产生以Jid命名的文件,用于在执行过程中master查看当前任务的执行情况。指令执行完毕后将结果传送给master后,删除该临时文件
- master将minion的执行结果存放在本地 /var/cache/salt/master/jobs目录,默认缓存24小时(可以通过修改master配置文件keepjobs进行调整)
测试:salt ‘*’ test.ping -v #可以查看到执行的详细过程,包括jid
2、job的基本管理
1、saltutil模块的job管理方法
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.saltutil.html#module-salt.modules.saltutil
1 saltutil.running #查看minion当前正在运行的jobs 2 saltutil.find_job <jid> #查看指定jid的job(minion正在运行的jobs) 3 saltutil.signal_job <jid> <single> #给指定的jid进程发送信号 4 saltutil.term_job <jid> #终止指定的jid进程(信号为15) 5 saltutil.kill_job <jid> ##终止指定的jid进程(信号为9)
2、runner中的job管理方法
https://docs.saltstack.com/en/latest/topics/jobs/index.html#the-jobs-runner
1 salt-run jobs.active #查看所有minion当前正在运行的jobs(在所有minion上运行saltutil.running) 2 salt-run jobs.lookup_jid <jid> #从master jobs cache 中查询指定jid的运行结果 3 salt-run jobs.list_jobs #列出当前master jobs cache 中的所有job
二、schedule
1、schedule简介
- salt 0.12.0版本加入schedule子系统,用于master/minion定期执行schedule中配置任务
- schedule可以配置在master配置文件、minion配置文件或pillar中
- master端配置schedule运行runner,minion端配置schedule为远程执行
- schedule支持returner,目前可以将schedule执行结果发送到指定的returner中
2、schedule常用实例
1、每60分钟minion执行highstate(配置在minion配置文件或pillar中)
schedule:highstate:function: state.highstateminutes: 60
2、每分钟查询一次loadavage,每5分钟查询一下内存,并将结果输出到MySQL returner中
schedule:uptime:function: status.uptimeseconds: 60returner: mysqlmeminfo:function: status.meminfominutes: 5returner: mysql
更多内容请参照官网
Job Management
三、salt proxy——syndic
https://www.cnblogs.com/bfmq/p/7919609.html
http://blog.51cto.com/openlinuxfly/1742780
1、架构图如下
2、salt syndic简介
salt syndic接口是一个强大的工具,这个歌工具允许建立salt命令拓扑结构。salt的基本设置是一个salt master指挥一组salt minion。syndic接口是一种特殊的直通minion,它运行在一个master上且连接到另外一个master,然后syndic minion所连接的master就可以控制连接到运行syndic的master上的minion。
- salt syndic是一个mater,其维护master地址配置为syndic服务器的地址的minion
- salt syndic是一个minion,其配置文件会配置syndic_master的地址,其上层的master称为MasterOfMaster
- syndic下的minions的key由syndic主机来进行accept,MasterOfMaster主机只维护minion及syndic账户级的key
- MasterOfMaster只传送指令给syndic,syndic并将其继续向下传送,syndic获取到minions的执行结果后,将其结果传送给MasterOfMaster
- syndic自身需要配置file_roots,MasterOfMaster并不会传送文件到syndic上
3、salt syndic部署、使用
http://www.cnblogs.com/kaishirenshi/p/9420790.html
若master有直接管理的机器,需要删除掉 salt-key -d salt-client-01 -y
修改minion的指定的master:直接修改hosts文件即可,将minion分组管理
重新minion,然后在相对应的master进行验证:salt-key -L 和salt-key -A -y
修改相关的配置需要重启服务syndic
若是key的问题,mater先执行salt-key -D -y删除所有的认证,然后将所有的pki目录删除;minion(因为保存了master的key,所有需要删除)删除cd /etc/salt && rm -rf minion_id pki,重新认证:从master开始重启,然后重启代理和相对应minion,最后进行认证salt-key(master执行),将认证加入salt-key -A -y;测试 salt ‘*’ test.ping