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()は、リストを各前のリスト項目の末尾にLFを持つ単一の文字列に変換します。上記で追加した最後の\nを除いて。
文書:https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_filters.html