Replace 要更换的Ansible lineinfile模块

Replace 要更换的Ansible lineinfile模块,replace,ansible,line,special-characters,Replace,Ansible,Line,Special Characters,我一直在尝试替换上的选项#$ActionFileEnableSync 对于打开$ActionFileEnableSync的/etc/rsyslog.conf文件。我用过更换模块 - replace: path: /etc/rsyslog.conf regexp: '^#\s*^$\s*ActionFileEnableSync on.*$' line: '$ActionFileEnableSync on' 我还尝试使用lineinfle模块 - linein

我一直在尝试替换上的选项#$ActionFileEnableSync 对于打开$ActionFileEnableSync的/etc/rsyslog.conf文件。我用过更换模块

- replace:
      path: /etc/rsyslog.conf
      regexp: '^#\s*^$\s*ActionFileEnableSync on.*$'
      line: '$ActionFileEnableSync on'
我还尝试使用lineinfle模块

 - lineinfile:
        dest: /etc/rsyslog.conf
        regexp: (^#\\$ActionFileEnableSync on)
        line: "$ActionFileEnableSync on"

但似乎没有一个行起作用,它要么不替换,要么继续添加新行

使用lineinfle设置文件中的特定行

你的regexp看起来不对。为什么regexp中的“on”是?当现有行显示“off”时,不应该将值设置为“on”吗

此外,regexp应该与已经“打开”的行匹配,无论是否注释掉。否则,Ansible将在每次运行时追加一行

尝试以下方法:

regexp: ^[#\s]*\$ActionFileEnableSync

这将替换注释标记和空格组合后的$ActionFileEnableSync。

将整个文件替换为模板。荒谬的是,你没有对整个文件进行管理控制。那么运行
replace
任务的结果是什么呢?它根本没有被替换!因此,您在
regexp
模块中发现了一个隐藏参数
line
!祝贺它做的不多(或者您还没有发现它的秘密功能),但至少它没有抛出语法错误。