PGBouncer 에 내장 된 통계 모듈의 일부 출력을 표시하는 PGBouncer에 대한 Ansible 플레이가 있습니다.
내 문제는 Ansible이 출력을 터미널에 인쇄 할 때 개행을 엉망으로 만든다는 것입니다. 보지 않고
----------
| OUTPUT |
----------
내가 참조
----------\n| OUTPUT |\n----------
누구든지 Ansible이 출력을 "예쁜 인쇄"하는 방법을 알고 있습니까?
PGBouncer 에 내장 된 통계 모듈의 일부 출력을 표시하는 PGBouncer에 대한 Ansible 플레이가 있습니다.
내 문제는 Ansible이 출력을 터미널에 인쇄 할 때 개행을 엉망으로 만든다는 것입니다. 보지 않고
----------
| OUTPUT |
----------
내가 참조
----------\n| OUTPUT |\n----------
누구든지 Ansible이 출력을 "예쁜 인쇄"하는 방법을 알고 있습니까?
답변:
Ansible에서 원하는 것을 수행 할 수있는 방법이 없습니다. 이 문제를 해결 방법으로 수행 할 수 있습니다.
ansible-playbook ... | sed 's/\\n/\n/g'
\n결과로 표시되므로 디버그 메시지에서이 정규 표현식을 사용할 수 있습니다.msg: "{{ result.stdout | regex_replace('\\n', '\n') }}"
보다 인간 친화적 인 출력을 원한다면 다음을 정의하십시오.
ANSIBLE_STDOUT_CALLBACK=debug
이렇게하면 불행한 이름 이 덜 간결하고 사람이 쉽게 읽을 수 있음에도 불구하고 디버그 출력 모듈 (이전 명칭은 human_log)을 사용할 수있게됩니다.
이 모듈을 사용할 수 없다는 오류가 발생하면 Ansible을 업그레이드하거나 업그레이드 할 수없는 경우이 모듈을 로컬로 추가하십시오. 2.0과 같은 버전 이상 또는 1.9까지 가능합니다.
이것을 구성하는 또 다른 옵션은 stdout_callback = debugansible.cfg 에 추가 하는 것입니다.
ANSIBLE_STDOUT_CALLBACK=yaml. fail msg객체를 제공 할 때 형식이 좋기 때문에 선호 합니다.
콜백 플러그인을 사용할 수 있습니다 . 출력을 재분석하고 쉽게 켜고 끌 수 있습니다.
CallbackBase가져 오기에서 상속해야합니다 from ansible.plugins.callback import CallbackBase.
Ansible Project 그룹 포럼 에서이 방법을 찾았습니다 .
- name: "Example test"
command:
...
register: test
- name: "Example test stdout"
debug:
msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
debug:
msg: "{{ test.stderr.split('\n') }}"
우리는 기본적으로 이것을 줄 바꿈으로 나누고 그 목록을 인쇄하여 목록으로 바꿉니다.
ignore_errors: yes위해 원래 명령과 나중에`-assert : that : "test.rc == 0"에 추가 할 수 있습니다 .
일시 정지 모듈을 사용할 수 있습니다 .
- pause:
prompt: "{{ variable_blob.stdout }}"
분 또는 초 를 정의하여 입력하지 않고 계속 이동 하지만 사용자 입력은 캡처되지 않습니다.
크레딧 : https://github.com/ansible/ansible/issues/17446#issuecomment-245391682
sed -e 's/\\n/'$'\\\n/g'. 또한 관련성 : comicjk.com/20