次のAnsibleロールタスクがあります:「タスク1」、「タスク2」、「タスク2.1」、「タスク2.2」、「タスク3」
それらを実行する必要がありますが、これらのタスクはすべて完了するのに多くの時間(1時間から12時間)を必要とし、特別な並べ替え順序で実行する必要があります(つまり、「タスク2.1」は「タスク2」の後にのみ開始する必要があります。など)
これどうやってするの?
長時間実行されるタスクの場合は、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