Puppet:在参数 'require' 中找不到资源 'File[/etc/auditbeat/auditbeat.yml]'
Puppet: Could not find resource 'File[/etc/auditbeat/auditbeat.yml]' in parameter 'require'
我正在使用 Puppet 替换 Spacewalk 配置通道。
我对木偶很陌生,我正在写的 class 应该将一些文件复制到主机系统。
我的 class:
里有这个
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,
}
}
但是当我 运行 puppet agent -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
But when I run puppet agent -t I get the following error:
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
正如@MattSchuchard 在评论中所解释的那样,这正是它所说的:您有一个 require
参数引用资源 File[/etc/auditbeat/auditbeat.yml]
,但该(Puppet)资源未在任何已处理的清单文件。这构成了清单集中的不一致。它与哪些文件可从您的模块安装或哪些文件已经存在于目标上无关,也与给定一个没有此类不一致的清单集时 Puppet 可能做什么无关。
考虑到是的声明:
file { '/etc/auditbeat':
ensure => directory,
path => '/etc/auditbeat',
require => File['/etc/auditbeat/auditbeat.yml'],
source => 'puppet:///modules/main_configurations/auditbeat/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
参数。
请注意,该组合还将启用目标子树的清除,以便删除其中任何位置的非托管 non-directories。如果您不想要,请改用 recurse => 'remote'
。
您可能想要添加各种其他属性,主要与已安装文件的所有权和模式有关。如果您只想从服务器上的文件中复制部分或全部内容,那么您需要添加 source_permissions => 'use'
。或者,有一些属性可以在您的清单中明确指定所有权和模式。
我正在使用 Puppet 替换 Spacewalk 配置通道。 我对木偶很陌生,我正在写的 class 应该将一些文件复制到主机系统。 我的 class:
里有这个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,
}
}
但是当我 运行 puppet agent -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
But when I run puppet agent -t I get the following error:
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
正如@MattSchuchard 在评论中所解释的那样,这正是它所说的:您有一个 require
参数引用资源 File[/etc/auditbeat/auditbeat.yml]
,但该(Puppet)资源未在任何已处理的清单文件。这构成了清单集中的不一致。它与哪些文件可从您的模块安装或哪些文件已经存在于目标上无关,也与给定一个没有此类不一致的清单集时 Puppet 可能做什么无关。
考虑到是的声明:
file { '/etc/auditbeat': ensure => directory, path => '/etc/auditbeat', require => File['/etc/auditbeat/auditbeat.yml'], source => 'puppet:///modules/main_configurations/auditbeat/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
参数。
请注意,该组合还将启用目标子树的清除,以便删除其中任何位置的非托管 non-directories。如果您不想要,请改用 recurse => 'remote'
。
您可能想要添加各种其他属性,主要与已安装文件的所有权和模式有关。如果您只想从服务器上的文件中复制部分或全部内容,那么您需要添加 source_permissions => 'use'
。或者,有一些属性可以在您的清单中明确指定所有权和模式。