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
$HOME
and operations like "<", ">", "|", and "&" will not work (use theshell
module 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