web-dev-qa-db-fra.com

variable msg de débogage d'impression ansible

J'essaie d'imprimer la variable mosh_version Précédemment enregistrée en utilisant la commande ansible debug msg Comme ceci:

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

Cela ne fonctionne pas et imprime l'erreur suivante:

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 }}"

J'ai essayé

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

mais cela affichera simplement "Mosh".

Quelle est la meilleure façon de faire fonctionner cela?

17
Zulakis

Essaye ça:

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

Plus d'informations dans http://docs.ansible.com/YAMLSyntax.html#gotchas

Modifié: Quelque chose comme ça fonctionne parfaitement pour moi:

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

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

http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta

25
Tom Aac

Réponse la plus simple

- debug: var=mosh_version.stdout
7
xddsg

Retirez simplement les deux points

debug: msg="Mosh Version {{ mosh_version.stdout }}"
1
remintz

J'utilise ceci, notez l'emplacement des guillemets doubles (") et des guillemets simples (')

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

Chaque fois que j'ai des problèmes avec les caractères spéciaux dans les chaînes/cmds Ansible, je fais ceci:

  1. Envelopper avec des guillemets simples
  2. Wrap avec crochets bouclés doubles

Donc, votre colon standard devient {{':'}}

Et votre tâche devient:

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

Encore une fois, cela fonctionne pour la plupart des caractères spéciaux, même les chaînes. Considérer ce qui suit:

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

Pour exécuter ceci dans Ansible, appliquez simplement la même logique, la tâche suivante s'exécute comme prévu:

- name: Get the docker container names
  become: yes
  Shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
0
Collin Cudd