2016-08-17 17 views
0

私は単なる1つ以上のホストで動作させようとしています。出来ますか?Ansible:在庫全体の変数が異なります

プロセスIDが別のホストで異なるため、この場合は別のホストでは失敗します。

- name: Fetching PID file from remote server 
    fetch: src="some.pid" dest=/tmp/ flat=yes fail_on_missing=yes 
    register: result 
    ignore_errors: True 

    - name: Is pid_file matching process ? 
    wait_for: path=/proc/{{ lookup('file', '/tmp/some.pid') }}/status state=present 
    when: result|success 
    register: result2 
    ignore_errors: True 
+0

私はあなたがここで何をしようとしているのかよく分かりません。なぜ最初にpidfileを取得しますか? – shaps

+0

これは、プレイブックからのサンプルですが、私が必要とするのは、pidファイルが存在し、独自の実行プロセスを持っている場合、pidファイルをstaledすることができます=処理していません。 – MUHAHA

+0

プロセスの適切なinitファイル(SysV init、upstart、systemdのいずれであろうと)を作成し、 'service'モジュールを使ってそれと対話するだけなら、おそらくもっと楽しいでしょう。 –

答えて

0

あなたの質問への正式な答え - それは、一度に複数のホスト上で動作させるために、テンプレートファイル名またはflat=noを使用して、例えば:

- name: Fetching PID file from remote server 
    fetch: src="some.pid" dest="/tmp/{{inventory_hostname}}.pid" flat=yes fail_on_missing=yes 
    register: result 
    ignore_errors: True 

    - name: Is pid_file matching process ? 
    wait_for: path="/proc/{{ lookup('file', '/tmp/'+inventory_hostname+'.pid') }}/status" state=present 
    when: result|success 
    register: result2 
    ignore_errors: True 

しかし、より良い方法は、1つのシェルでこのタスクを交換することですコマンドを使用して、すべてのファイルを安全なホストにフェッチせずにすべてを一度にチェックします。
retry/until句をコマンドとともに使用して、特定のコマンド結果を待つこともできます。

関連する問題