Auditoria de fantoche do recurso de arquivo não funcionando

4

Eu simplesmente não consigo fazer isso funcionar. Eu quero que o fantoche envie uma mensagem de log que aparece nos relatórios sempre que um arquivo é alterado. Isso parece tão simples pelo que ouvi e li, mas nada funciona.

Aqui está o arquivo init.pp:

# sudo init.pp

# 21 Sep 2011: Changed to test for notification only

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,
        audit   => content,
    }

#   exec { "/bin/date":
#       cwd => "/tmp",
#       subscribe => File['/etc/sudoers'],
#       refreshonly => true,
#   }

#   notify { "sudoers has been changed.":
#       refreshonly => true,
#   }
}

Se eu adicionar o exec , nada acontece. Se eu adicionar o notify , ele reclamará do parâmetro refreshonly .

Se eu remover todas as opções do arquivo, exceto audit , as permissões do arquivo serão alteradas de 440 para 644.

Se eu remover replace , o fantoche substitui o arquivo.

Meu teste foi:

  1. Executar puppet agent --test
  2. Alterar arquivo ( /etc/sudo )
  3. Execute novamente puppet agent --test (possivelmente com touch site.pp ou service apache2 reload primeiro)

Ainda estou para ver qualquer mensagem de audit . Estou executando o fantoche v2.6.3 no servidor Ubuntu Lucid Lynx 10.04.

    
por Mei 21.09.2011 / 21:19

2 respostas

1

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.

    
por 22.09.2011 / 19:02
0

Você deve ser capaz de notificar qualquer tipo, para poder notificar o tipo de notificação.

exec { "foo":
  notify => Notify["exec-alert"],
}

notify { "exec-alert":
  message => "sudoers has changed"
}

o fato de que as alterações no arquivo são registradas nos registros de fantoches de qualquer maneira, está marcado como uma alteração.

    
por 30.10.2011 / 04:06

Tags