如何将echo命令的结果放入ansible变量

Max*_* L. 4 ansible ansible-playbook

我将$ MY_VAR设置为远程主机上的某个值,并且我想从剧本中查询它(把它的值放在ansible变量中),这就是我所看到的:

   -名称:将shell变量放入ansible变量中
     命令:echo $ MY_VAR
     注册:my_var

   -调试:var = my_var
好的:[192.168.78.10] => {
    “ my_var”:{
        “已更改”:是, 
        “ cmd”:[
            “回声”, 
            “ $ my_var”
        ], 
        “ delta”:“ 0:00:00.002284”, 
        “ end”:“ 2014-12-17 18:10:01.097217”, 
        “调用”:{
            “ module_args”:“ echo $ my_var”, 
            “ module_name”:“命令”
        }, 
        “ rc”:0, 
        “ start”:“ 2014-12-17 18:10:01.094933”, 
        “ stderr”:“”, 
        “ stdout”:“ $ my_var”, 
        “ stdout_lines”:[
            “ $ my_var”
        ]
    }
}

注意:

如果我将命令更改为:

 command: pwd
Run Code Online (Sandbox Code Playgroud)

然后我得到了预期的结果:

"my_var": {
  "stdout": "/home/vagrant", 
  "stdout_lines": [
      "/home/vagrant"  
  ]
}
Run Code Online (Sandbox Code Playgroud)

当从ansible调用时好像回声没有扩展

ted*_*r42 5

问题是您正在使用该command模块。文件说明如下:

给定的命令将在所有选定的节点上执行。它不会通过外壳程序进行处理,因此像$HOME和这样的变量和诸如“ <”,“>,” |“和”&“之类的操作将不起作用(shell如果需要这些功能,请使用模块)。

因此,请使用shell代替command