Rhel
Puppet 不會忽略空格
我有一個條目可能會出現也可能不會出現在
/etc/rsyslog.conf
:# Added for Kiwi *.err;*.emerg;*.alert;*.warning;*.debug;*.notice;*.crit;*.info @10.19.24.50
由於其中一些伺服器會手動鍵入此內容,因此我不能假設空格是統一的(並且在我發現的至少兩台伺服器上確實有所不同)。我正在嘗試編寫一個木偶模組來刪除這些行。
該模組的相關部分:
file_line {'remove_kiwi_comment': ensure => absent, path => $confFile, match => "^#.*Kiwi$", line => "# Added for Kiwi", match_for_absence => true, } file_line {'remove_kiwi_forward2': ensure => absent, match_for_absence => true, path => $confFile, match => '^.*50$', line => '*.err;*.emerg;*.alert;*.warning;*.debug;*.notice;*.crit;*.info @10.19.24.50', notify => Service[$serviceName], }
上面成功地從其中一個 DEV 伺服器中刪除了評論,但實際的重定向似乎沒有被刪除。我玩弄了正則表達式
match=>
無濟於事,我不確定我還能嘗試什麼來刪除該行。rsyslog
如果我添加了足夠的空格,它將刪除它,但我不希望我的模組假設任何數量的空格,只是為了載入存在一些空格。Stdlib 模組版本為 4.11,master 為 3.3,此伺服器的客戶端節點為 3.6
該
file_line
類型有一個 after 選項,它應該適合你。唯一的問題是您需要確保在評論之前刪除規則。file_line {'remove_kiwi_comment': ensure => absent, path => $confFile, match => '^#.*Kiwi$', line => '# Added for Kiwi', match_for_absence => true, } file_line {'remove_kiwi_forward2': ensure => absent, path => $confFile, line => '# Added for Kiwi', after => '^#.*Kiwi$', before => File_line['remove_kiwi_comment'], notify => Service[$serviceName], }
如果您不能相信評論會在文件中,我能想到的最簡單的解決方案是使用
exec
withsed
。exec { 'remove-kiwi-rsyslog-line-with-sed': command => "sed -i '/@10\.19\.24\.50$/d' $confFile", path => '/usr/bin:/bin', onlyif => "grep -q '@10.19.24.50$' $confFile", }
如果 ip 地址 10.19.24.50 在文件中,這只會執行 exec。
要刪除重定向行,請嘗試使用此行,
file_line {'remove_kiwi_forward2': 確保 => 缺席, match_for_absence => 真, 路徑 => $conf文件, 匹配 => '^.*50$', 行 => '\*.err;\*.emerg;\*.alert;\*.warning;\*.debug;\*.notice;\*.crit;\*.info.*@10.19.24.50' , 通知 => 服務[$serviceName], }