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

文書:https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_filters.html

関連情報