Ansible v2.4.0.0
Ansibleタスクで以下を実行するGitlab-CEをインストールしています。ご覧のとおり、一部のプロセスはダウンしていますが、最終的にはアップします。
# gitlab-ctl status
run: gitlab-workhorse: 0s, normally up
run: logrotate: 1s, normally up
down: nginx: 0s, normally up
down: postgresql: 1s, normally up
run: redis: 0s, normally up
run: sidekiq: 0s, normally up
run: Unicorn: 0s, normally up
すべてのサービスが実行状態にあることを確認するAnsiblewait_forタスクを作成するにはどうすればよいですか? IOWこれが表示されたときにのみ次のタスクに進みたい
# gitlab-ctl status
run: gitlab-workhorse: 0s, normally up
run: logrotate: 1s, normally up
run: nginx: 0s, normally up
run: postgresql: 1s, normally up
run: redis: 0s, normally up
run: sidekiq: 0s, normally up
run: Unicorn: 0s, normally up
retries
/until
メソッドを使用できます。
- command: gitlab-ctl status
register: cmd_res
retries: 5
until: cmd_res.stdout_lines | reject('search','^run') | list | count == 0
run
で始まる行を出力から削除し、それらをカウントします。そのような行が残っていない場合にのみ、次のタスクに進みます。