実現したいこと
プロセス(hoge)が起動するまでチェクを行い、確認が取れてから次のタスクに進ませたいです。
確認には下記のコマンドで実施しています。
ps aux | grep hoge | grep -v grep
該当プロセス(hoge)は起動までに数秒かかるため、リトライは待ち時間1秒で10回に設定しています。
起動していない場合にはコマンド実行結果はnullになる認識です。
nullの場合は、リトライを実施して起動するまでチェックを繰り返しさせたいです。
しかし現状は起動していないにもかかわらず、一度もリトライをしないで次のタスクに
進んでしまいます。
7行目のuntilの設定条件に誤りがあると思いますが、色々変更しても改善出来ません。
何かお気づきのことがありましたらご教授頂けないでしょうか。
宜しくお願い致します。
発生している問題・エラーメッセージ
「import check_ps.yml」のタスクでリトライがされず、次のタスク「Echo result check ps」の
failed_when句でエラーとなります。
fatal: [localhost]: FAILED! => { "ps_check.stdout_lines": [], "failed_when_result": true }
該当のソースコード
playbook.yml
1- name: Set ps of value 2 ansible.builtin.set_fact: 3 ps_check: 4 5- name: import check_ps.yml 6 ansible.builtin.import_tasks: check_ps.yml 7 until: ps_check.stdout_lines != null 8 retries: 10 9 delay: 1 10 11- name: Echo result check ps 12 ansible.builtin.debug: 13 var: ps_check.stdout_lines 14 failed_when: ps_check.stdout_lines | length < 1
check_ps.yml
1- name: Check prosess 2 ansible.builtin.shell: ps aux | grep hoge | grep -v grep 3 register: ps_check 4 ignore_errors: true
変数(ps_check)の状況
# msg: "{{ ps_check.stdout_lines }}"の結果 ok: [localhost] => { "msg": [] } # msg: "{{ ps_check.stdout_lines | type_debug }}"の結果 ok: [localhost] => { "msg": "list" }
試したこと
下記の条件に変更してもリトライされず改善しませんでした。
until: ps_check.stdout_lines | length >= 1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/24 11:28