我已经设置了 cobbler,它可以在安装操作系统后自动运行 puppet。它运行良好,只是 puppet 需要一段时间才能安装所有软件包。这仍处于测试阶段,因此总共只有大约 15 个软件包。我的 site.pp 如下所示:
node server1 {
include myrepo
include bacula
include vsftpd
}
myrepo 只是将存储库文件复制到客户端服务器。bacula 列出了 11 个要安装的包,而 vsftpd 只列出了 1 个包。
在安装操作系统(Suse)后,立即复制了存储库文件,安装了 vsftpd,但客户端服务器中只安装了 2 个 bacula 包。我不得不等待大约半个小时,直到所有 bacula 包都安装完毕。Puppet 日志是空的。
如果我手动运行 puppet,软件包的安装将会顺利且快速地进行。延迟的原因可能是什么?
答案1
除非您设置显式依赖项,否则资源的顺序可能会有问题。
您编写的方式并不意味着在应用其他类之前会部署 repo。
例如这个:
node server1 {
class { 'myrepo': }
class { 'bacula':
require => Class['myrepo'],
}
class { 'vsftpd':
require => Class['myrepo'],
}
}
可以正确排序。
您还可以将 a 添加require myrepo
到vsftpd
andbacula
类。
有很多解决方案。
如果这些是外部模块,那么我总是尽量避免以任何方式更改它们,以使更新更容易。
看:https://puppet.com/docs/puppet/latest/lang_relationships.html