I have $MY_VAR set to some value on the remote host, and I want to query it from a playbook (put it's value in an ansible variable), here's what I am seeing :
- name: put shell var into ansible var
command: echo $MY_VAR
register: my_var
- debug: var=my_var
ok: [192.168.78.10] => {
"my_var": {
"changed": true,
"cmd": [
"echo",
"$my_var"
],
"delta": "0:00:00.002284",
"end": "2014-12-17 18:10:01.097217",
"invocation": {
"module_args": "echo $my_var",
"module_name": "command"
},
"rc": 0,
"start": "2014-12-17 18:10:01.094933",
"stderr": "",
"stdout": "$my_var",
"stdout_lines": [
"$my_var"
]
}
}
If I change the command to :
command: pwd
then I get the expected result :
"my_var": {
"stdout": "/home/vagrant",
"stdout_lines": [
"/home/vagrant"
]
}
It seems as if echo does not expand when called from ansible
The problem is that you are using the command module. Here's what the documentation says:
The given command will be executed on all selected nodes. It will not be processed through the shell, so variables like
$HOMEand operations like "<", ">", "|", and "&" will not work (use theshellmodule if you need these features).
So, use shell instead of command.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With