During Ansible playbook debugging it is useful to know how to display host facts or registered variables.
To print a message from Ansible playbook, as well as a value of a variable, we can use Ansible debug module.
In the examples below i am showing how to print particular Ansible variables and how to list all known facts and variables from Ansible playbook.
Cool Tip: Enable DEBUG mode and increase VERBOSITY in Ansible! Read more →
Debug Ansible Playbook by Printing Variables
Print a variable:
- name: "Ansible | Print a variable"
debug:
msg: "The operating system is {{ ansible_distribution }}"
Display a variable only if it is defined:
- name: "Ansible | Print a variable if defined"
debug:
msg: "The 'foo' variable value is {{ foo }}"
when: foo is defined
- name: "Ansible | Print a message if a variable is undefined"
debug:
msg: "The 'bar' variable is undefined"
when: bar is not defined
Print multiple variable:
- name: "Ansible | Print multiple variable"
debug:
msg: |
The role is {{ host_role }}
The environment is {{ host_environment }}
List all known variables and facts:
- name: "Ansible | List all known variables and facts"
debug:
var: hostvars[inventory_hostname]
To also print the “magic variables”, print the variable “vars”
from https://stackoverflow.com/questions/18839509/where-can-i-get-a-list-of-ansible-pre-defined-variables
“`yaml
– name: print magic vars
debug:
var: vars
“`
This is great. My question might be simple, but I can’t find it anywhere. Can you output all those facts and variables separately?
I’ll give you a use case, and maybe you have a better idea for the solution. I’m using roles and sometimes calling roles from other roles, and using include_files and include_tasks, and also occasionally calling jinja2 files! (breath) So it would be very helpful troubleshooting all this if it was possible to see facts v. variables.
If you have a magic wand, extra credit would be if you can identify the level of precedence where the variable was defined. I know, I know, like I said it’s extra credit! 🙂
Thanks.
I have to print “openjdk version \”1.8.0_432\”” from “msg”: [
“openjdk version \”1.8.0_432\””,
“OpenJDK Runtime Environment (build 1.8.0_432-b06)”,
“OpenJDK 64-Bit Server VM (build 25.432-b06, mixed mode)”. How can I do it?