![ansible stdout.lines를 목록 형식의 파일로 저장하는 방법](https://linux55.com/image/133675/ansible%20stdout.lines%EB%A5%BC%20%EB%AA%A9%EB%A1%9D%20%ED%98%95%EC%8B%9D%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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