在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值

[root@master ansible]# ansible node1 -B  -P   -m yum -a "name=ansible" -vv
Using /etc/ansible/ansible.cfg as config file
META: ran handlers
192.168.77.129 | SUCCESS => {
"ansible_job_id": "23974611070.37468",
"changed": true,
"finished": ,
"results_file": "/root/.ansible_async/23974611070.37468",
"started":
} [root@master ansible]# ansible node1 -m async_status -a "jid=23974611070.37468"
192.168.77.129 | SUCCESS => {
"ansible_job_id": "23974611070.37468",
"changed": false,
"finished": ,
"msg": "",
"rc": ,
"results": [
"ansible-2.3.1.0-1.el6.noarch providing ansible is already installed"
]
}

playbook 也是可以指定参数启用异步的。

# asynctest.yml
--- - hosts: node1
tasks:
- shell: sleep 100 && hostname
async: 100
poll: 0
register: result - debug: var=result - async_status: jid={{ result.ansible_job_id }}
register: job_result
until: job_result.finished
retries: 30

那么在 ansible api 里对于 ad-hoc 和 playbook 怎么启用这个异步任务的,不然页面有时候要卡好久在那的。

def run_model(self, module_name, module_args, task_time=None, poll=None):
"""
run module from andible ad-hoc.
module_name: ansible module_name
module_args: ansible module args
task_time: 这个任务执行时间的上限值。即任务执行所用时间如果超出这个时间,则认为任务失败。这个需要大于0,等于 0 的时候不支持异步(默认值)。
poll: 任务异步执行时轮询的时间间隔。如果poll为0,就相当于一个不关心结果的任务。
"""
self.ips_cov_str() if task_time and poll:
play_source = dict(
name="Ansible Play",
hosts=self.ips,
gather_facts='no',
tasks=[dict(action=dict(module=module_name, args=module_args), async=task_time, poll=poll)]
)
else:
play_source = dict(
name="Ansible Play",
hosts=self.ips,
gather_facts='no',
tasks=[dict(action=dict(module=module_name, args=module_args))]
)
play = Play().load(play_source, variable_manager=self.variable_manager, loader=self.loader)
  .......

最新文章

  1. 用javascript写星际飞机大战游戏
  2. centos7.0 安装redis集群
  3. 为什么operator>>(istream&, string&)能够安全地读入长度未知的字符串?
  4. TStringHelper的相关知识、Helper相关细节
  5. iOS UITableview
  6. HackerRank "Self Balancing Tree"
  7. C#winform在textbox插入内容换行
  8. php 批量生成html,txt文件的方法(实例代码)
  9. SpringMVC在上传文件的时候提示The current request is not a multipart request错误
  10. 日常之学习CSS3变形和js函数指针
  11. Web平台安装及检测程序
  12. java8 Lambda表达式的新手上车指南(1)
  13. leetcode算法题(JavaScript实现)
  14. 将EditPad Lite 加入鼠标右键
  15. 牛客寒假算法基础训练集中营4 E题 Applese 涂颜色
  16. mybatis generator工具的使用
  17. 【Scala】Scala-循环与遍历
  18. [转]centos6 与 7 其中的一些区别
  19. 第2次作业——APP案例分析
  20. USACO 5.3 Network of Schools

热门文章

  1. Cooperative Groups
  2. mybatis generator 的日常使用
  3. python常见报错信息!错误和异常!附带处理方法
  4. 视图相关SQL
  5. Spring Security系列之极速入门与实践教程
  6. laravel 用户认证简单示例
  7. SpringBoot集成Dubbo+Zookeeper
  8. Day01_虚拟化架构与系统部署
  9. Python os.stat() 方法
  10. PHP array_intersect_key() 函数