Estou tentando depurar um problema de cache com o Puppet no RedHat 7. Minhas versões estão no final desta questão.
Abaixo está um trecho do meu manifesto site.pp
. Está tudo bem e a verificação do Nagios está instalada no nó foo.example.com
.
node 'foo.example.com' {
nagios::service {'my_database':
check_command => 'check_tcp_nrpe!3306',
service_description => 'My Database',
}
}
Agora, se eu adicionar outro nagios::service
check em site.pp
, ele também será escolhido por
puppet agent --noop --test
mas se eu remover a mesma chamada de nagios::service
e executar o agente novamente, ele ainda o verá (essas são execuções secas - não entendo por que ele está em cache). Isso vem acontecendo em muitos cenários diferentes em vários manifestos. Se eu remover o puppetdb e executar o agente, o puppetdb será recriado e tudo voltará ao normal por um tempo.
Alguma sugestão sobre onde procurar antes de eu descer a rota de atualização do fantoche ou reinstalar a versão mais recente? Não tenho certeza de quais outras informações fornecer, então, por favor, deixe-me saber se há algo que possa ajudar.
Minhas versões,
puppetlabs-release-7-12.noarch
puppet-server-3.8.6-1.el7.noarch
puppetdb-terminus-2.3.8-1.el7.noarch
puppet-3.8.6-1.el7.noarch
puppetdb-2.3.8-1.el7.noarch
Atualização 1
Abaixo está a saída da execução de # puppet agent --noop --test
,
# puppet agent --noop --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for foo.example.com
Info: Applying configuration version '1522355276'
.
.
.
Notice: /Stage[main]/Nagios::Server/Nagios::Service_file[/etc/nagios/conf.d/services/foo-my_database_nagios_service.cfg]/File[/etc/nagios/conf.d/services/foo-my_database_nagios_service.cfg]/ensure: current_value absent, should be present (noop)
.
.
.
Notice: Finished catalog run in 21.10 seconds
O aviso de que esse arquivo deve estar presente é falso.
Tudo o que fiz foi adicionar
nagios::service {'my_database':
check_command => 'check_tcp_nrpe!3306',
service_description => 'My Database',
}
execute o agente, remova-o e execute o agente novamente. Toda vez que eu executo o agente, ele ainda acha que a verificação deve estar presente mesmo que não esteja definida em nenhum dos meus manifestos.
Atualização 2
Estas são as etapas que uso para remover o item em cache. Depois de executar essas etapas, ele não tenta mais adicionar my_database
check.
cd /var/lib/puppetdb
sudo mv db db.'date +%F' # create a backup
sudo systemctl restart puppetmaster
sudo systemctl restart puppetdb