用Ansible替换文件中的单词

lip*_*l10 2 ansible ansible-playbook ansible-2.x

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

$PASSWORD="oldpassword"
Run Code Online (Sandbox Code Playgroud)

有:

$PASSWORD="newpassword"
Run Code Online (Sandbox Code Playgroud)

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

- name: change password with lineinfile 
  lineinfile:
    dest: test.txt
    regexp: '^$PASSWORD='
    line: '^$PASSWORD="newpassword"'
    state: present
    backrefs: yes 
Run Code Online (Sandbox Code Playgroud)

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

我也没有尝试,backrefs并添加了字符串而不是替换.

请指教.谢谢.

hel*_*loV 5

正则表达式操作:

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

所以,$用反斜杠逃脱.

  - lineinfile:
      dest: /tmp/test.txt
      regexp: '^\$PASSWORD='
      line: '$PASSWORD="newpassword"'
      state: present
Run Code Online (Sandbox Code Playgroud)

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