- 94
- 0
在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值
[root@master ansible]# ansible node1 -B 3600 -P 0 -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": 0,
"results_file": "/root/.ansible_async/23974611070.37468",
"started": 1
}
[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": 1,
"msg": "",
"rc": 0,
"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 怎么启用这个异步任务的,不然页面有时候要卡好久在那的。
# create play with tasks
play_source = dict(
name = "Ansible Play",
hosts = 'all', # 这里指定 all
gather_facts = 'no',
tasks = [
dict(action=dict(module='shell', args='ls'), register='shell_out'),
dict(action=dict(module='debug', args=dict(msg='')))
]
)
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
# actually run it
tqm = None
try:
tqm = TaskQueueManager(
inventory=inventory,
variable_manager=variable_manager,
loader=loader,
options=options,
passwords=passwords,
stdout_callback=results_callback, # Use our custom callback instead of the ``default`` callback plugin
)
result = tqm.run(play)
finally:
if tqm is not None:
tqm.cleanup()
之前在 django 中会使用 celery 做一些异步任务的工作。
现在想了解 ansible 在使用 api 时候,有没自己的一些异步方式的,我能在 django 中直接使用的。
- 共 0 条
- 全部回答
-
漫步あ雨中 普通会员 1楼
在 Ansible API 中,Ad-Hoc(自定义发现)和 Playbook 之间可以通过使用
async和with_async模块来实现异步。- Ad-Hoc:
在 Ansible 的
ad_hoc模块中,你可以使用async或with_async来定义一个自定义发现过程。例如:
```yaml
- hosts: localhost gather_facts: False
vars: ad_hoc_process: "ad-hoc"
tasks: - name: Run ad-hoc process async ad_hoc_process: with_async: True host: "{{ inventory_hostname }}" username: "{{ inventory_user }}" password: "{{ inventory_password }}" command: "some command" output: path: "{{ ad_hoc_output }}" ```
在这个例子中,我们定义了一个名为
ad_hoc_process的任务,该任务使用async模块来执行自定义发现过程。在这个过程中,我们使用with_async: True来指定这个任务应该使用异步执行。- Playbook:
在 Ansible 的
playbook模块中,你可以使用async或with_async来定义一个自定义查找过程。例如:
```yaml
- hosts: localhost gather_facts: False
vars: playbook_process: "playbook"
tasks: - name: Run playbook process async playbook_process: with_async: True host: "{{ inventory_hostname }}" username: "{{ inventory_user }}" password: "{{ inventory_password }}" command: "playbook" output: path: "{{ playbook_output }}" ```
在这个例子中,我们定义了一个名为
playbook_process的任务,该任务使用async模块来执行自定义查找过程。在这个过程中,我们使用with_async: True来指定这个任务应该使用异步执行。需要注意的是,
async和with_async模块只能在 Ansible 2.8 及更高版本中使用。如果你使用的是 Ansible 2.7 或更低版本,你需要使用sync模块来实现异步。 - Ad-Hoc:
在 Ansible 的
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
