Ansible lineinfile 将 ^M 添加到行尾?

Ansible lineinfile adding ^M to end of lines?

我正在使用 ansible 的 lineinfile 来更新文件。

一旦我更新了文件 - 有效 - 文件的每一行末尾都有 ^M 个字符。

这种行为是不可取的 - 我该如何关闭它?似乎违反直觉,我需要 dos2unix 才能纠正?

- name: Update database.php - username
  lineinfile:
    dest: /var/www/html/database.php
    regexp: '^$username.*$'
    line: "$username = '{{ mariadb_rc_user }}';"
    backrefs: yes

编辑备注 模板和副本是可能的,但在这种情况下很难使用,原因我不会讨论,但足以说明:如果有意义,我会使用它们。

我找到了答案,它与我的预期相反。 lineinfile 和 replace(请参阅重复的 link 以获得建议的解决方案)都不是问题所在。事实上,他们正在做各自的工作 - 并以换行结束行。

问题的出现是因为之前的文件只有CLRF终结符,独占时是不可见的。

当引入 LF 时,CRLF (^M) 打印在 vim 中以区分现在有两种类型的行终止。