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

관련 정보