variável ansible print debug msg

12

Eu tento imprimir a variável mosh_version registrada anteriormente usando o comando ansible debug msg da seguinte forma:

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"

Não funciona e imprime o seguinte erro:

Note: The error may actually appear before this position: line 55, column 27

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"
                          ^
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

Eu tentei

- name: Print mosh version
  debug: msg=Mosh Version: "{{ mosh_version.stdout }}"

mas isso apenas imprimirá "Mosh".

Qual é a melhor maneira de fazer isso funcionar?

    
por Zulakis 01.06.2015 / 13:50

5 respostas

20

Tente isto:

- name: Print mosh version
  debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'"

Mais informações no link

Editado: Algo assim funciona perfeito para mim:

- name: Check Ansible version
  command: ansible --version
  register: ansibleVersion

- name: Print version
  debug:
    msg: "Ansible Version: {{ ansibleVersion.stdout }}"

link

    
por 01.06.2015 / 14:16
3

Resposta mais simples

- debug: var=mosh_version.stdout
    
por 02.06.2015 / 19:43
1

Basta remover o cólon

debug: msg="Mosh Version {{ mosh_version.stdout }}"
    
por 28.06.2016 / 22:09
0

Eu uso isso, observe a localização de aspas duplas (") e aspas simples (')

- name: Print mosh version
  debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
    
por 14.04.2016 / 15:37
0

Sempre que tenho problemas com caracteres especiais em Ansible strings / cmds, faço isso:

  1. Envolva com aspas simples
  2. Enrole com chaves duplas

Assim, seu cólon padrão se torna {{':'}}

E sua tarefa se torna:

- debug: msg="Ansible Version{{':'}} {{ ansibleVersion.stdout }}"

Novamente, isso funciona para a maioria dos caracteres especiais, até para as strings. Considere o seguinte:

docker ps --format '{{.Names}}'

Para executar isso no Ansible, basta aplicar a mesma lógica, a seguinte tarefa é executada conforme o esperado:

- name: Get the docker container names
  become: yes
  shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
    
por 06.07.2018 / 03:14