首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puppet -如何设置条件来检查软件包是否已安装,如果未安装,则需要跳过它?

Puppet -如何设置条件来检查软件包是否已安装,如果未安装,则需要跳过它?
EN

Stack Overflow用户
提问于 2021-09-28 09:02:20
回答 1查看 154关注 0票数 0

对不起,我在木偶中开始了我的jorny,我正在用这个工具面对我的第一个挑战。我想检查puppet是否在服务器上安装了一个包,如果是,保证它正在运行,如果没有安装,只需跳到下一个任务。

代码语言:javascript
复制
class profile::windows::rapid7 {
 
  $manage_rapid7  = lookup('manage_rapid7',         Optional[Boolean], 'first', true)
  $rapid7_filepath = 'C:\Program Files\Rapid7\Insight Agent\ir_agent.exe'
 
  $rapid7_service_exists = find_file($rapid7_filepath)
 
  if $facts['kernel'] == 'Windows' {
 
    if $manage_rapid7 {
      if($rapid7_service_exists){
        service { 'ir_agent':
          ensure  => 'running',
          enable  => 'true',
        }
      }
    }
  }
}

正如你在上面看到的,如果安装了rapid7,我会确保它正在运行,但现在我有一些服务器没有这个包,因此,我得到了错误。所以我的问题是:有没有可能在没有安装pkg的情况下跳过这个任务?

诚挚的问候,

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 14:56:12

我想在puppet中检查一个包是否安装在服务器上,如果是,保证它正在运行,如果没有安装,只需跳到下一个任务。

最合适的方法是让Puppet根据节点标识知道是否应该安装包。这是node classification的领域,通常通过node blocksexternal node classifier和/或特定于节点的external data实现。使用这些工具,您可以在目录构建期间通知Puppet是否应用管理相关服务的类,以及使用什么类参数。通常也会在相同的基础上选择是否应用管理包本身的类。您可以在the Forge上找到许多这种方法的示例。

但是,在您确实需要将有关节点当前状态的数据提供给目录构建过程的情况下,提供服务的Puppet机制是。可以编写自定义或外部事实来测试包是否已安装。然后,您可以编写Puppet条件语句,根据该事实的值影响节点目录的内容。但是,请注意,这会在运行之前告诉节点状态,而且如果您希望Puppet管理包的安装状态,那么它也是多余的。

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

https://stackoverflow.com/questions/69358742

复制
相关文章

相似问题

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