如何将ansible stdout.lines保存到列表格式的文件中

如何将ansible stdout.lines保存到列表格式的文件中

需要使用下面的剧本将 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

相关内容