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