使用Ansible

时间:2017-01-01 16:49:42

标签: ansible ansible-playbook ansible-2.x

我试图替换文件中的一个字符串。例如:

$PASSWORD="oldpassword"

使用:

$PASSWORD="newpassword"

这是应该执行此操作的Ansible任务:

- name: change password with lineinfile 
  lineinfile:
    dest: test.txt
    regexp: '^$PASSWORD='
    line: '^$PASSWORD="newpassword"'
    state: present
    backrefs: yes 

不幸的是我找不到它无法正常工作的原因。我无法用新字符串替换它。

我也在没有backrefs的情况下尝试添加字符串而不是替换。

请指教。 谢谢。

1 个答案:

答案 0 :(得分:5)

来自Regular expression operations

  

$:匹配字符串的结尾或者在结尾处的换行符之前   字符串

所以,用反斜杠转义$

  - lineinfile:
      dest: /tmp/test.txt
      regexp: '^\$PASSWORD='
      line: '$PASSWORD="newpassword"'
      state: present

此外,您不需要在示例中使用backrefs参数,因为您的正则表达式没有反向引用。