我正在尝试调试 RedHat 7 上 Puppet 的缓存问题。我的版本位于这个问题的底部。
以下是我的清单的摘录site.pp
。一切正常,Nagios 检查已安装在foo.example.com
节点上。
node 'foo.example.com' {
nagios::service {'my_database':
check_command => 'check_tcp_nrpe!3306',
service_description => 'My Database',
}
}
现在,如果我添加另一个nagios::service
检查,site.pp
它也会被选中,
puppet agent --noop --test
但如果我删除相同的nagios::service
调用并再次运行代理,它仍然会看到它(这些是试运行 - 我不明白它为什么要缓存)。这种情况在多个清单的许多不同场景中都发生过。如果我删除 puppetdb 并运行代理,puppetdb 将被重新创建,并且一切都会恢复正常一段时间。
在升级 Puppet 或重新安装最新版本之前,有什么建议可以参考吗?我不确定还需要提供什么其他信息,所以如果有任何信息可以帮助我,请告诉我。
我的版本,
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
更新 1
以下是运行的输出# 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
该文件应该存在的通知是虚假的。
我所做的就是添加,
nagios::service {'my_database':
check_command => 'check_tcp_nrpe!3306',
service_description => 'My Database',
}
运行代理,然后将其删除,并再次运行代理。每次我运行代理时,它仍然认为该检查应该存在,即使它没有在我的任何清单中定义。
更新 2
这些是我用来删除缓存项的步骤。运行这些步骤后,它不再尝试添加该my_database
检查。
cd /var/lib/puppetdb
sudo mv db db.`date +%F` # create a backup
sudo systemctl restart puppetmaster
sudo systemctl restart puppetdb
答案1
这个问题与我在“更新 2”中所做的操作有关。当 puppetdb 被删除时,它失去了对其所有资源的跟踪。一旦puppet agent --test --noop
在我们所有的服务器上运行,它就知道在哪里可以找到资源,并且可以在目录中找到所有内容。
基本上,一旦 puppetdb 被删除,您就应该puppet agent --test --noop
在所有主机上运行它。