次に表示または表示されない可能性がある項目があります/etc/rsyslog.conf
。
# Added for Kiwi
*.err;*.emerg;*.alert;*.warning;*.debug;*.notice;*.crit;*.info @10.19.24.50
これらのサーバーのいくつかは手動で入力するため、スペースが均一であるとは考えられません(そして私が見つけた少なくとも2つのサーバーによって異なります)。この行を削除するために、パペットモジュールを作成しようとしています。
このモジュールの関連部分:
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サーバーの1つからコメントを正常に削除しましたが、実際のリダイレクトは削除されていないようです。私は成功せずに正規表現を試してみましたが、match=>
行を削除するために何を試すことができるのかわかりません。十分なスペースを追加すると削除されますが、モジュールはスペースを占有しませんrsyslog
。
Stdlibモジュールのバージョンは4.11、マスターは3.3、このサーバーのクライアントノードは3.6です。
ベストアンサー1
このfile_line
タイプには、あなたに適した将来のオプションがあります。唯一の問題は、コメントする前にルールを削除したことを確認する必要があることです。
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
withを使用することですsed
。
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",
}
execは、ファイルにIPアドレス10.19.24.50が含まれている場合にのみ実行されます。