Replace 要更换的Ansible lineinfile模块
我一直在尝试替换上的选项#$ActionFileEnableSync 对于打开$ActionFileEnableSync的/etc/rsyslog.conf文件。我用过更换模块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
- 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
!祝贺它做的不多(或者您还没有发现它的秘密功能),但至少它没有抛出语法错误。