首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >木偶:在参数'require‘中找不到资源’File[/etc/audit节拍/auditbeat.yml]‘

木偶:在参数'require‘中找不到资源’File[/etc/audit节拍/auditbeat.yml]‘
EN

Stack Overflow用户
提问于 2022-02-08 10:30:07
回答 1查看 619关注 0票数 0

我用木偶来代替太空行走的配置通道。我对傀儡非常陌生,我正在编写的课程应该将一些文件复制到主机系统中。我班上有这样一个:

代码语言:javascript
代码运行次数:0
运行
复制
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时,我会得到以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
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>

为了完整起见,这是我的傀儡服务器上的文件夹结构:

代码语言:javascript
代码运行次数:0
运行
复制
/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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-08 19:47:44

,但是当我运行傀儡代理-t时,会得到以下错误:

错误:无法从远程服务器检索目录:服务器上的错误500 :服务器错误:无法在节点上找到参数‘’中的资源‘file/etc/auditbeat.yml’(文件:行: 8)

正如@MattSchuchard在注释中所解释的那样,它的意思就是:您有一个引用资源requireFile[/etc/auditbeat/auditbeat.yml]参数,但是在任何已处理的清单文件中都没有声明(Puppet)资源。这构成了清单集中的不一致。它与哪些文件可以从您的模块中安装,哪些文件已经在目标上存在无关,也与在给定一个清单集中没有这些不一致的情况下,木偶可能会做什么无关。

考虑到是的声明:

'puppet:///modules/main_configurations/auditbeat/auditbeat.yml',文件{‘/etc/audit节拍’:确保=>目录,路径=>‘/etc/audit节拍’,需要=>文件‘/etc/auditbeat.yml’,源代码=> => recurse => true,}

我倾向于认为,您至少误解了require元参数的含义。它是与各种资源使用的相对顺序有关的几种资源之一。它说,要声明的资源的应用需要指定的其他资源之前已经成功地应用过。这肯定不是你想要的。

此外,您要分配给该参数的资源引用并不用作资源声明。它没有包含足够的信息来这样做。顾名思义,它是对在其他地方声明的资源的引用。

看起来,您正在尝试管理根植于/etc/auditbeat的子目录树,以匹配模块中的树。在这种情况下,您可能更想要这样的东西:

代码语言:javascript
代码运行次数:0
运行
复制
  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'。或者,还有一些属性可以显式地指定清单中的所有权和模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71032331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档