web-dev-qa-db-ja.com

非常に長いansibleタスクを実行する方法は?

次のAnsibleロールタスクがあります:「タスク1」、「タスク2」、「タスク2.1」、「タスク2.2」、「タスク3」

それらを実行する必要がありますが、これらのタスクはすべて完了するのに多くの時間(1時間から12時間)を必要とし、特別な並べ替え順序で実行する必要があります(つまり、「タスク2.1」は「タスク2」の後にのみ開始する必要があります。など)

これどうやってするの?

4
user611946

長時間実行されるタスクの場合は、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

4
Zlemini