我有以下 ansible 角色任务:“任务 1”、“任务 2”、“任务 2.1”、“任务 2.2”、“任务 3”
我需要运行它们,但所有这些任务都需要大量时间才能完成(从 1 小时到 12 小时),并且它们必须按照特殊的排序顺序进行(我的意思是“任务 2.1”必须在“任务 2”之后启动,依此类推)
我怎样才能做到这一点?
答案1
对于长时间运行的任务,使用 Ansible 的异步模式可以有效地将任务置于后台。
- name: 'YUM - fire and forget task'
yum: name=docker-io state=installed
async: 1000
poll: 0
register: yum_sleeper
然后执行另一项检查后台任务状态的任务。
- name: 'YUM - check on fire and forget task'
async_status: jid={{ yum_sleeper.ansible_job_id }}
register: job_result
until: job_result.finished
retries: 30
示例取自 Ansible 官方文档: http://docs.ansible.com/ansible/playbooks_async.html