Puppet 缓存资源

Puppet 缓存资源

我正在尝试调试 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在所有主机上运行它。

相关内容