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?
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 }}"
Réponse la plus simple
- debug: var=mosh_version.stdout
Retirez simplement les deux points
debug: msg="Mosh Version {{ mosh_version.stdout }}"
J'utilise ceci, notez l'emplacement des guillemets doubles (") et des guillemets simples (')
- name: Print mosh version
debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
Chaque fois que j'ai des problèmes avec les caractères spéciaux dans les chaînes/cmds Ansible, je fais ceci:
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