Automation Ansible linefile模块';s属性行未在服务器上添加环境变量

Automation Ansible linefile模块';s属性行未在服务器上添加环境变量,automation,ansible,Automation,Ansible,嗨,我有一个任务如下 - name: Replace log directory in configuration lineinfile: path: $HOME/amsible_test/test.txt regexp: '^dataDir=' line: 'dataDir=$HOME/.zookeeper_log' 它运行得很好,但问题是这是将行写入dataDir=$HOME/.zookeeper\u log 但根据我的

嗨,我有一个任务如下

   - name: Replace log directory in configuration
      lineinfile:
        path: $HOME/amsible_test/test.txt
        regexp: '^dataDir='
        line: 'dataDir=$HOME/.zookeeper_log'  
它运行得很好,但问题是这是将行写入
dataDir=$HOME/.zookeeper\u log

但根据我的理解,它应该按照ubuntu 16.04将
$HOME
解析为
/HOME/username
。它应该编写
dataDir=/HOME/username/.zookeer.log
,但没有按预期进行

任何关于我做错了什么的建议。为了进行字符串解析,我尝试了许多替代方法,但没有成功


提前谢谢你这对我很有效

- name: test connection
  shell: echo $HOME
  register: user_home

- name: Replace log directory in configuration

  lineinfile:
    path: $HOME/amsible_test/test.txt
    regexp: '^dataDir='
    line: 'dataDir={{user_home.stdout}}/.zookeeper_log'

可能是@nwinkler的副本没有找到我的解决方案甚至没有找到这个@nwinkler我的ansible版本是ansible 2.7.2。此语法也不适用于meAnsible,不在模块参数中进行shell变量替换。就是这样。也可以这样做:
line:'dataDir={{lookup('env','HOME')}/.zookeeper\u log'
。。。这样做,您就不需要第一个shell任务。查找调用是在控制计算机上完成的,而不是在远程计算机上完成的,这就是为什么在这种情况下您不能使用查找…同意@nwinkler吗