How to put the result of an echo command into a mutable variable
I have $ MY_VAR set to some value on the remote host and I want to request it from the playbook (put that value in a variable), this is what I see:
- 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"
]
}
}
Note:
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 that echo doesn't expand when called from non-essential
source to share
The problem is you are using a module command
. Here's what the documentation says :
This command will be executed on all selected nodes. I will not be processed through the shell, so type variables
$HOME
and operations such as "<", ">", "|" and "&". won't work (use a moduleshell
if you need these functions).
So use shell
instead command
.
source to share