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吗