Exibir saída com Ansible

32

Eu tenho um jogo Ansible para o PGBouncer que exibe alguma saída de um módulo de estatísticas embutido no PGBouncer.

Meu problema é que quando o Ansible imprime a saída para o terminal, ele manipula as novas linhas. Em vez de ver

----------
| OUTPUT |
----------

vejo

----------\n| OUTPUT |\n----------

Alguém sabe como fazer com que o Ansible "imprima bem" a saída?

    
por mjallday 28.10.2014 / 05:11

4 respostas

13

Não há como fazer o que você deseja nativamente no Ansible. Você pode fazer isso como uma solução alternativa:

ansible-playbook ... | sed 's/\n/\n/g'
    
por 28.10.2014 / 16:23
47

Se você deseja uma saída mais humana, defina:

ANSIBLE_STDOUT_CALLBACK=debug

Isto irá fazer uso ansible o módulo de saída de depuração (anteriormente denominado human_log ) whinch apesar de seu nome infeliz é menos detalhado e muito mais fácil de ler por seres humanos.

Se você receber um erro que este módulo não está disponível, atualizar Ansible ou adicionar este módulo localmente se você não pode atualizar ansible, ele vai trabalhar com mais versões do ansible como 2.0 ou probaly mesmo 1.9.

Outra opção para configurar este objetivo é adicionar stdout_callback = debug a sua ansible.cfg

    
por 24.04.2017 / 15:20
13

Você pode usar um plug-in de retorno de chamada . Isto irá analisar novamente a sua saída e é facilmente ligado e desligado.

    
por 16.04.2015 / 19:27
11

Encontrou esta forma no fórum do grupo 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') }}"

Basicamente, transformamos isso em lista dividindo-a por nova linha e, em seguida, imprimindo essa lista.

    
por 30.09.2016 / 11:53