需要使用下面的剧本将 std.out 行保存到委托主机中的文件中。我可以保存数据,但保存的数据是json格式。我需要这些数据作为列表格式,就像命令输出一样。
- name: Host Collection
hosts: rcht01
tasks:
- name: Host coll
shell: mysql -ulnx -plnx -D inventory -se "select Host_Name from servers where OS= 'Linux' AND Server_Status = 'Live' AND Server_loc = 'Richardson' "| tr 'A-Z' 'a-z'
register: all_hosts_list
- name: Saving data to local file
copy:
content: "{{ all_hosts_list.stdout_lines }}"
dest: /tmp/host_coll
delegate_to: rchabs01
答案1
content: "{{ all_hosts_list.stdout_lines|join('\n') }}"
答案2
这条线对我来说效果更好:
content: "{{ output.stdout_lines | join('\n') }}\n"
它添加了最后的 LF,否则将被省略。
join 函数使用参数中提供的字符作为列表项之间的分隔符“将列表连接成字符串”。输出首先以列表形式存在,没有行终止符; join() 将列表转换为单个字符串,每个前列表项的末尾带有 LF。除了我上面添加的最后一个 \n 之外。
文件:https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_filters.html