2017-02-23 9 views
0

特定の文字列がログファイルの最終行になくなるまで、シェルコマンドを実行して再試行するタスクがあります。毎秒500回再試行します。再試行のタスクを複数のサーバーで非同期に実行する

条件が満たされると、サーバーがシャットダウンされます。これは、一度に1台のサーバーをserial: 1で実行すると効果的です。

しかし、私は一度に複数のサーバーでこれを実行したいと思います。問題は、すべてのサーバーがすべてのサーバーをシャットダウンする前に条件を満たすまで待機することです。

私は非同期に実行し、そのサーバーが条件を満たしているので、各サーバーをシャットダウンしたいと思います。

私はasync: truepoll: 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' 

これが可能である達成したいのですが何ですか?

答えて

0

設定strategyfreeに:これは、セット内の他のホストを待たずに、できるだけ速く、各ホスト上でタスクを実行するためにAnsibleを指示します

- hosts: all 
    strategy: free 
    tasks: 
    ... 

+0

ありがとうございます。これは必要に応じて動作します! –

関連する問題