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