2017-06-26 9 views
0

2番目のタスクの最初のタスク出力をループしたい。最初のタスクでは、配列内のホスト名とIPを取得します。アレイ上の2番目のタスクループでは、アレイの各項目を別々の行に印刷します。最初のタスク出力配列上の不可能なループ

ここにコードがあります。

- name: Store known hosts of 'all' the hosts in the inventory file 
    hosts: localhost 
    connection: local 

    vars: 
    ssh_known_hosts_command: "ssh-keyscan -T 10" 
    ssh_known_hosts_file: "{{ lookup('env','HOME') + '/.ssh/known_hosts' }}" 
    ssh_known_hosts: "{{ groups['all'] }}" 

    tasks: 

    - name: For each host, find the ip 
    shell: 'echo -e "{{ item }}\n`dig +short {{ item }}`"' 
    with_items: "{{ ssh_known_hosts }}" 
    register: ssh_known_host_results 
    ignore_errors: yes 

    - name: print message 
    debug: 
     msg: "{{ item.stdout_lines[0] + ' test' }}" 
    with_items: "{{ ssh_known_host_results.results }}" 

第2のタスクどのようにssh_known_host_results.results配列をループすることができますか?

おかげで、私はこのような何かを探しています

SR:

- name: print message 
    debug: 
     msg: "{{ item+ ' test' }}" 
     with_items: "{{outer_item.stdout_lines "  
    with_items: "{{ ssh_known_host_results.results }}" 
    loop_control: 
    loop_var: outer_item 

私はその与えていない配列項目をローカルホスト無視する追加

。どのように2つの配列要素としてホスト名とIPを返すことができますか?

- name: For each host, find the ip 
    shell: 'echo -e "{{ item }}\n`dig +short {{ item }}`"' 
    with_items: "{{ ssh_known_hosts }}" 
    when: not item == 'localhost' 
    register: ssh_known_host_results 
    ignore_errors: yes 

    - name: print message 
    debug: 
     msg: "{{ item + ' test' }}" 
    with_items: "{{ ssh_known_host_results.results | map(attribute='stdout_lines') | list }}" 
+0

問題はどのようなものです:

は、各ラインを反復する 、あなたは結果を平らにすることができますか?あなたのコードでは、前のタスクの結果をループし、すべてのdig結果の最初の行を出力します。 –

+0

@ ConstantinSuvorov、sh_known_host_results.resultsを繰り返し実行する別のループを追加しようとしています。 – sfgroups

答えて

0

ダイナミックネストループのサポートは、アナシフィックに実装されていません。

- name: print message 
    debug: 
    msg: "{{ item + ' test' }}" 
    with_items: "{{ ssh_known_host_results.results | map(attribute='stdout_lines') | list }}" 
+0

ありがとうございました – sfgroups

+0

"when:item == 'localhost'"という行は追加されません。 – sfgroups

+0

私の答えにコピーペーストエラーがあり、それを修正しました。 'item'はstdoutの文字列ですので、ホスト名と比較することはできません。 –

関連する問題