use*_*488 2 ansible ansible-playbook
我以这种方式向网络检查的 Ansible 输出注册:
- name: Test kube networking
shell: kubectl exec -n iperf -it {{ item }} /test.sh
loop: "{{ pods.stdout_lines }}"
register: echo
- debug: msg={{ item.stdout_lines }}
loop: "{{ echo.results }}"
Run Code Online (Sandbox Code Playgroud)
现在如何通过所有条目?我想将每个结果中的所有“stdout_lines”作为项目。这样的事情可能吗?或者也许一些“嵌套”循环对结果进行一次循环,然后对每个结果的所有 stdout_lines 进行二次循环?
小智 5
每当我遇到这样的情况时,我都会停下来寻找更好的方法。
例如,有一个“脚本”模块。如果您编写了一个输出一些 json 的漂亮脚本,那么您可以使用“from_json”过滤器将该命令的输出作为一个可靠的事实导入。通过这种方式,您可以用您最喜欢的语言完成艰苦的工作,并完美地安排您的事实,以便它们易于循环。
但是要尝试回答您的问题.. 我猜您希望将 kubectl 命令中的所有 stdout_lines 合并到一个长列表中。这应该这样做:
- name: Test kube networking
shell: kubectl exec -n iperf -it {{ item }} /test.sh
loop: "{{ pods.stdout_lines }}"
register: echo
- set_fact:
stdout_lines: []
- set_fact:
stdout_lines: "{{ stdout_lines + item.stdout_lines }}"
with_items: "{{ echo.results }}"
- debug:
msg: "This is a stdout line: {{ item }}"
with_items: "{{ stdout_lines }}"
Run Code Online (Sandbox Code Playgroud)