我仔细检查了所有设置,但没有找到问题,这就是我尝试在这里获得帮助的原因。
让我展示一下配置:
puppet.conf:
[...]
[master]
environmentpath = $confdir/environments/
hiera_config = $confdir/environments/production/sites/xy/config/hiera.yaml
default_manifest = ./sites/xy/config/
environment_timeout = 0
fileserver.conf:
[...]
[sites]
path /etc/puppet/environments/production/sites/
allow *
auth.conf:
[...]
# extra mountpoint
path /sites
allow *
[...]
现在每当我运行Puppet并尝试实现特定文件时,我都会得到:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find any files from puppet:///sites/xy/files/xy/xy.key.pub at /etc/puppet/environments/production/modules/xy/manifests/xy.pp:88 on node xy
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
请注意,我必须用xy替换敏感信息,但出于调试目的,我尝试尽可能地提供每个细节。
所以/sites
根据/etc/puppet/environments/production/sites/
指向fileserver.conf
,目录就像这样存在(具有正确的权限imho):
/etc/puppet % ls -ld /etc/puppet/environments/production/sites/
drwxr-xr-x 8 root puppet 4096 Oct 7 12:46 /etc/puppet/environments/production/sites/
因此,上述文件puppet:///sites/xy/files/xy/xy.key.pub
应位于/etc/puppet/environments/production/sites/xy/files/xy/xy.key.pub
中,如下所示:
/etc/puppet % ls -l /etc/puppet/environments/production/sites/*/files/*/*.key.pub
-rw-r--r-- 1 root puppet 725 Oct 7 12:46 /etc/puppet/environments/production/sites/xy/files/xy/xy.key.pub
在错误消息中提到了加载文件的模块的第88行,它看起来像这样:
$sshpubkey = file("puppet:///${sitefiles}/xy/${s0_pubkey}")
其中$s0_pubkey
为xy.key.pub
而${sitefiles}
为sites/$site/files
,这会导致所请求文件的评估路径如下:puppet:///sites/xy/files/xy/xy.key.pub
答案 0 :(得分:0)
Puppet中的函数file()
无法处理puppet://
的Puppet挂载点。 https://docs.puppet.com/puppet/latest/reference/function.html#file的官方文档没有具体提及它,但显然没有提及它意味着它无法处理额外的挂载点并希望从模块文件目录中加载文件。
我的解决方案:我将使用一个变量来声明我的" sites文件的绝对路径"像这样:$sitefiles_absolute = "/etc/puppet/environments/${environment}/sites/xy/files/"
永远不会改变或至少不会改变。并将其保存在site.pp
文件中,可以在每个节点和模块上使用。