Ansible 使用LINEINFLE插入线,但未按预期工作
我正在使用Ansible 使用LINEINFLE插入线,但未按预期工作,ansible,centos7,ansible-module,Ansible,Centos7,Ansible Module,我正在使用lineinfle在syslog文件中插入行。这是我的系统日志: /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null
lineinfle
在syslog文件中插入行。这是我的系统日志:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
我想在missingok
之后添加compress
和delaycompress
。这是我的密码:
-name:“在/etc/logrotate.d/syslog中添加压缩行”
线条填充:
路径:/etc/logrotate.d/syslog
插入者:“^missingok”
行:“压缩”
第一场比赛:是的
国家:现在
-名称:“在/etc/logrotate.d/syslog中添加延迟压缩行”
线条填充:
路径:/etc/logrotate.d/syslog
在“^SharedScript”之前插入
行:“延迟压缩”
第一场比赛:是的
国家:现在
但在文件末尾(最后一行)添加这两个选项。注意:我在
compress
和delaycompress
之前添加了4个空格,这是因为正则表达式中的插入符号与字符串开头匹配,而不使用任何字符
因为在missingok
和sharedscripts
之前有空格,所以您的insertafter
和insertbefore
regex
要解决此问题,您可以借助与任何空格、制表符或换行符匹配的\s
,以及与零个或多个连续字符匹配的星号*
,在行首只允许空格和空格
所以正确的正则表达式应该是
-
^\s*missingok
-
^\s*共享脚本
-name:“在/etc/logrotate.d/syslog中添加压缩行”
线条填充:
路径:/etc/logrotate.d/syslog
插入符:“^\\s*遗漏”
行:“压缩”
第一场比赛:是的
国家:现在
-名称:“在/etc/logrotate.d/syslog中添加延迟压缩行”
线条填充:
路径:/etc/logrotate.d/syslog
insertbefore:“^\\s*共享脚本”
行:“延迟压缩”
第一场比赛:是的
国家:现在
请注意,由于Ansible是一个Python应用程序,.Ansible在“^\s*missingok”处失败。在Yamlint.cominded中验证抱歉我的不好,对于Ansible,在那些正则表达式中,你需要加倍反斜杠,回答更正。