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 }}"
問題はどのようなものです:
は、各ラインを反復する 、あなたは結果を平らにすることができますか?あなたのコードでは、前のタスクの結果をループし、すべてのdig結果の最初の行を出力します。 –
@ ConstantinSuvorov、sh_known_host_results.resultsを繰り返し実行する別のループを追加しようとしています。 – sfgroups