0
特定の文字列がログファイルの最終行になくなるまで、シェルコマンドを実行して再試行するタスクがあります。毎秒500回再試行します。再試行のタスクを複数のサーバーで非同期に実行する
条件が満たされると、サーバーがシャットダウンされます。これは、一度に1台のサーバーをserial: 1
で実行すると効果的です。
しかし、私は一度に複数のサーバーでこれを実行したいと思います。問題は、すべてのサーバーがすべてのサーバーをシャットダウンする前に条件を満たすまで待機することです。
私は非同期に実行し、そのサーバーが条件を満たしているので、各サーバーをシャットダウンしたいと思います。
私はasync: true
とpoll: 0
を試しましたが、retry: true
がタスクで使用されても動作しないようです。
ここには、私が何をしているのかを示すコードスニペットがあります。
- name: "Checking for inactivity on the server before shutdown"
shell: "tail -1 serverlogs.log | egrep 'STRING1|STRING2' ||:"
args:
chdir: "/path/to/log/"
register: check_inactivity
until: '"STRING1" not in check_inactivity.stdout and "STRING2" not in check_inactivity.stdout'
retries: 500
delay: 1
- name: Debug message
debug:
msg: "Shutting down the server | {{ inventory_hostname }}"
when: 'check_inactivity | changed'
これは私が
- name: "Checking for inactivity on the server before shutdown"
shell: "tail -1 serverlogs.log | egrep 'STRING1|STRING2' ||:"
args:
chdir: "/path/to/log/"
register: check_inactivity
until: '"STRING1" not in check_inactivity.stdout and "STRING2" not in check_inactivity.stdout'
retries: 500
delay: 1
async: 45
poll: 0
- name: Debug message
debug:
msg: "Shutting down the server | {{ inventory_hostname }}"
when: 'check_inactivity | changed'
これが可能である達成したいのですが何ですか?
ありがとうございます。これは必要に応じて動作します! –