我用木偶来代替太空行走的配置通道。我对傀儡非常陌生,我正在编写的课程应该将一些文件复制到主机系统中。我班上有这样一个:
class main_configurations {
file { '/etc/auditbeat':
ensure => directory,
path => '/etc/auditbeat',
require => File['/etc/auditbeat/auditbeat.yml'],
source => 'puppet:///modules/main_configurations/auditbeat/auditbeat.yml',
recurse => true,
}
}
但是,当我运行傀儡代理-t时,我会得到以下错误:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not find resource 'File[/etc/auditbeat/auditbeat.yml]' in parameter 'require' (file: /etc/puppetlabs/code/environments/production/modules/main_configurations/manifests/init.pp, line: 8) on node <servername>
为了完整起见,这是我的傀儡服务器上的文件夹结构:
/etc/puppetlabs/code/environments/production/modules/main_configurations/files/auditbeat
/etc/puppetlabs/code/environments/production/modules/main_configurations/files/auditbeat/auditbeat.yml
/etc/puppetlabs/code/environments/production/modules/main_configurations/files/auditbeat/audit.rules.d
/etc/puppetlabs/code/environments/production/modules/main_configurations/files/auditbeat/audit.rules.d/auditbeat-rules.conf
发布于 2022-02-08 11:47:44
,但是当我运行傀儡代理-t时,会得到以下错误:
错误:无法从远程服务器检索目录:服务器上的错误500 :服务器错误:无法在节点上找到参数‘’中的资源‘file/etc/auditbeat.yml’(文件:行: 8)
正如@MattSchuchard在注释中所解释的那样,它的意思就是:您有一个引用资源require
的File[/etc/auditbeat/auditbeat.yml]
参数,但是在任何已处理的清单文件中都没有声明(Puppet)资源。这构成了清单集中的不一致。它与哪些文件可以从您的模块中安装,哪些文件已经在目标上存在无关,也与在给定一个清单集中没有这些不一致的情况下,木偶可能会做什么无关。
考虑到是的声明:
'puppet:///modules/main_configurations/auditbeat/auditbeat.yml',文件{‘/etc/audit节拍’:确保=>目录,路径=>‘/etc/audit节拍’,需要=>文件‘/etc/auditbeat.yml’,源代码=> => recurse => true,}
我倾向于认为,您至少误解了require
元参数的含义。它是与各种资源使用的相对顺序有关的几种资源之一。它说,要声明的资源的应用需要指定的其他资源之前已经成功地应用过。这肯定不是你想要的。
此外,您要分配给该参数的资源引用并不用作资源声明。它没有包含足够的信息来这样做。顾名思义,它是对在其他地方声明的资源的引用。
看起来,您正在尝试管理根植于/etc/auditbeat
的子目录树,以匹配模块中的树。在这种情况下,您可能更想要这样的东西:
file { '/etc/auditbeat':
# no path required if it is already given by the resource title
ensure => 'directory',
source => 'puppet:///modules/main_configurations/auditbeat',
recurse => true,
}
主要是,这会删除require
参数。
请注意,该组合还将启用对目标子树的清除,以便删除其中任何位置的非托管非目录。如果您不想这样做,那么使用recurse => 'remote'
代替。
您可能需要添加多种其他属性,主要与已安装文件的所有权和模式有关。如果您只想从服务器上的文件中复制部分或全部内容,那么就需要添加source_permissions => 'use'
。或者,还有一些属性可以显式地指定清单中的所有权和模式。
https://stackoverflow.com/questions/71032331
复制相似问题