Sim, isso é muito possível. O que você precisa usar é o metáforo "notify" , que informará o recurso file
para fazer com que outro recurso seja executado se for acionado. Alguns tipos de recursos se importam em ser notificado ("atualizado" na documentação); Os recursos service
e exec
são os mais úteis. Você pode, então, criar um recurso exec
com refreshonly => true
que grava em um log ou em stdout.
Eu implementaria sua configuração acima da seguinte forma:
class sudo {
package { 'sudo':
ensure => present,
before => File['/etc/sudoers'],
}
file { '/etc/sudoers':
ensure => file,
mode => 440,
owner => root,
group => root,
source => 'puppet:///modules/sudo/sudoers',
replace => false,
notify => Exec["sudoers_changed"],
}
exec { "sudoers_changed":
command => "/bin/echo '/etc/sudoers has changed...'",
refreshonly => true,
loglevel => "alert",
logoutput => true,
}
}
Os parâmetros loglevel
e logoutput
para o exec
apenas deixarão mais claro onde a saída está indo enquanto você está experimentando; você certamente pode ajustá-los às suas necessidades.