#程序员# #DevOps# #saltstack# #自动化运维# #干货#
我是一个在北京互联网厂子里996的程序员,一边学习追赶新技术,怕被潮流甩下掉队,一边学习投资理财方法,让自己的薪水滚雪球。我相信,越努力越幸运,虽然刚开始雪球滚起来很慢,但是只要坚持下去,它就会越滚越快,自己的养老就靠它了。在财富自由的道路上,我与你共勉。欢迎来评论区与我交流心得和干货,这样我们就可以收获更多。
大家都知道,devops领域里面做自动化运维的工具有saltstack和ansible,我最常用的saltstack,这里跟大家分享下saltstack执行命令时的超时机制。上小知识。
![c8665aed717da4c90bce6d025ad387ca.png](https://i-blog.csdnimg.cn/blog_migrate/a18193c049b0c93be64f3785ff6d1c88.jpeg)
salt cli在给发送命令的时候,有个参数”-t, –timeout”, 表面上看是超时控制,其实文档说的很明白,其意思是如果salt cli在等待了这个timeout时间后minion还是没有返回结果回来,那么就用find_job去query一下minion询问当前执行状态。如果在如果find_job超时过了gather_job_timeout设定的时间,那么salt命令会返回:Minion did not return. [No response]。 这个参数并不是我们通常所理解的超时控制。参考 saltmaster configuration 和 SaltStack Event系统监听events测试。并且可以参看源代码salt/salt/client/__init__.py验证。
在通过cmd.run执行命令的时候,真正可以控制超时就终止命令执行的方法是:salt '*' cmd.run 'sleep 5; echo OK' timeout=1,参考这里,文中的其他命令执行方法也有超时控制。
Master中控制timeout的参数
- gather_job_timeout: default 10,The number of seconds to wait when the client is requesting information about running jobs.
- TIMEOUT:Default 5,Set the default timeout for the salt command and api.
好了,今天的分享就到这里。 如果大家觉得我的分享对你有用,还请点一点关注,在评论区跟我交流,我会持续分享一些有用的知识点和心得。