2017-09-20 12 views
0

私は非常に単純な脚本があります、私はdelegate_toに追加するものは何でも、完全なものにするになぜ、delegate_toパラメータが無視される可能性がありますか?

TASK [debug] ************************************************************************************************************************************************************************* 
ok: [host1 -> host2] => { 
    "changed": false, 
    "msg": "host1" 
} 

- hosts: test 
    gather_facts: no 

    tasks: 
    - name: debug 
     debug: msg="{{ inventory_hostname }}" 
     run_once: yes 
     delegate_to: "host2" 

とインベントリファイル:

host1 ansible_ssh_host="1.2.3.4" 
host2 ansible_ssh_host="1.2.3.5" 

[test] 
host1 
host2 

そして、プレイの結果をランダムな文字列であっても、結果は常に"msg": "host1"です。

このタスクをgroups.test.1や他のホストに正しく委任するにはどうすればよいですか?

EDIT:

- hosts: test 
    gather_facts: no 

    tasks: 
    - name: 1 
     shell: "hostname -f" 
     run_once: yes 
     delegate_to: "host2" 
     register: result 

    - name: debug 
     debug: msg="{{ ansible_host }} {{ inventory_hostname }} {{ result.stdout }}" 
     run_once: yes 

プレイ出力:

TASK [command] *************************************************************************************************************************************************************************************** 
changed: [host1 -> None] 

TASK [debug] ***************************************************************************************************************************************************************************************** 
ok: [host1] => { 
    "msg": "1.2.3.4 host1 host2" 
} 

あなたができるようにdelegate_toを使用する場合Ansibleの2.3.x以降

Ansible 2.4.0

答えて

3

​​は変更されませんあなたはあなたがいる文脈を「把握する」ことができますが、 ge。

あなたはしてテストすることができます。あなたが取得する必要

- name: debug 
    debug: msg="{{ inventory_hostname }} {{ ansible_host }}" 
    run_once: yes 
    delegate_to: "host2" 

host1 1.2.3.5

+0

をいいえ、全く動作しません。それでもなお 'host1 1.2.3.4'を返します – Misko

+0

シェルを実行していても、delegate_toで「hostname -f」を指定すると、コマンドがhost1に対して実行されたことが証明されます。 – Misko

+0

'-vvv'冗長な' hostname -f'の例を元の投稿に追加してください。 –

関連する問題