puppet/clamav/manifests/init.pp

95 lines
2 KiB
Puppet

# Install Clam AntiVirus
#
# === Parameters
#
# $update:
# Set to false to disable automatic virus database updates.
#
class clamav($update=true) {
package { "clamav":
ensure => installed,
}
case $::operatingsystem {
"centos","redhat": {
if (versioncmp($::operatingsystemrelease, 7) < 0) {
if (!$update) {
file { "/etc/cron.daily/freshclam":
ensure => absent,
}
}
} else {
package { "clamav-update":
ensure => $update ? {
true => "present",
false => "absent",
}
}
}
}
default: {
fail("clamav module not supported on ${::operatingsystem}")
}
}
}
# Install Clam Antivirus Daemon
#
class clamav::daemon {
require clamav
package { "clamd":
ensure => installed,
}
service { "clamd":
ensure => running,
enable => true,
}
}
# Scan directories periodically
#
# === Parameters:
#
# $name:
# Directory path to scan.
# $hour:
# At what hour should scanning occur. Defaults to 4am.
# $weekday:
# At what day should sacnning occur. For daily scanning you
# can use "*". Defaults to Sunday.
# $exclude:
# Directories matching to this regex will be excluded from
# scanning. Default is to scan everything.
#
# === Sample usage:
#
# clamav::scan { "/export/roles":
# exclude => "/export/roles/[a-z]*/library/archive",
# }
#
define clamav::scan($hour="04", $weekday="Sunday", $exclude=undef) {
require clamav
if $exclude {
$exclude_opts = "--exclude-dir='${exclude}'"
}
cron { "virusscan-${name}":
command => "clamscan -r --infected --no-summary ${name} ${exclude_opts}",
user => "root",
hour => $hour,
minute => "00",
weekday => $weekday,
}
}