ansible print debug msg variable
Solution 1
Try this:
- name: Print mosh version
debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'"
More info in http://docs.ansible.com/YAMLSyntax.html#gotchas
Edited: Something like this works perfect for me:
- name: Check Ansible version
command: ansible --version
register: ansibleVersion
- name: Print version
debug:
msg: "Ansible Version: {{ ansibleVersion.stdout }}"
http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta
Solution 2
Simplest answer
- debug: var=mosh_version.stdout
Solution 3
I have displayed variable and message in the same debug play.
Ansible Task
- name: Report the /boot/initramfs file status for latest installed kernel
debug:
msg: "{{ ansible_hostname }} = {{INITRAMFS_LAST_KERNEL.stdout}}"
Output
TASK [os-upgrade.linux : Report the /boot/initramfs file status for latest installed kernel] *******************************************
ok: [ANSIBLENODE] => {
"msg": "ANSIBLENODE = /boot/initramfs-3.10.0-1062.12.1.el7.x86_64.img"
}
Solution 4
Anytime I have problems with special characters in Ansible strings/cmds I do this:
- Wrap with single quotes
- Wrap with double curly brackets
So your standard colon becomes {{':'}}
And your task becomes:
- debug: msg="Ansible Version{{':'}} {{ ansibleVersion.stdout }}"
Again this works for most special characters, even strings. Consider the following:
docker ps --format '{{.Names}}'
In order to run this in Ansible, just apply the same logic, the following task executes as expected:
- name: Get the docker container names
become: yes
shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
register: docker_containers
Solution 5
Just remove the colon
debug: msg="Mosh Version {{ mosh_version.stdout }}"
Related videos on Youtube
Comments
-
Zulakis over 1 year
I try to print the previously registered
mosh_version
variable using the ansibledebug msg
command like this:- name: Print mosh version debug: msg="Mosh Version: {{ mosh_version.stdout }}"
It doesn't work and prints the following error:
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 }}"
I tried
- name: Print mosh version debug: msg=Mosh Version: "{{ mosh_version.stdout }}"
but this will just print "Mosh".
What's the best way to get this running?
-
Zulakis almost 9 yearsThere are no more syntax errors, but it doesn't work either:
TASK: [ Print mosh version] ************************************** ok: [127.0.0.1] => { "msg": "Mosh" }
-
Zulakis almost 9 years
ok: [127.0.0.1] => { "var": { "mosh_version.stdout_lines": [ "mosh 1.2.4a [build mosh-1.2.4-57-g9eeb2fb]" ] } }
this works, I'd really prefer the custom message though ;-) -
Tom Aac almost 9 yearsCheck my updated answer
-
Dalibor Filus over 8 yearsPlease note: debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'" will display only "Mosh". The msg="..." must be in quotes, instead of the whole message. But answer from @xddsg works better, as it is more detailed var dump.
-
TecHunter over 7 yearsHonestly, this is not a full solution but still it worked and solved the next issue I had. Can't use the other syntax because I use it with
when
so removing the colon actually is the simplest way to solve this. so I upvote ;)