Puppet 基于osfamily的已安装模块

Puppet 基于osfamily的已安装模块,puppet,Puppet,我已按如下方式配置了傀儡清单 class main_config{ if $::osfamily == 'windows' { } else { class{main_config::install:} -> class{main_config::config:} } } 我还安装了Linux和Windows都需要的puppet模块。当我在Linux上运行puppet agent时,还安装了与Windows相关的模块,如powershell exec,Li

我已按如下方式配置了傀儡清单

class main_config{
  if $::osfamily == 'windows' {
  }
  else {
    class{main_config::install:} ->
    class{main_config::config:}
  }
}
我还安装了Linux和Windows都需要的puppet模块。当我在Linux上运行puppet agent时,还安装了与Windows相关的模块,如powershell exec,Linux绝对不需要这些模块

我正在寻找基于操作系统类型限制模块的方法,以避免安装不必要的模块


例如,当我在puppet master上安装puppetlabs powershell puppet模块时,当我在linux服务器上的客户端上运行puppet agent时,此windows模块也会安装。

检查此答案实现此功能的唯一真正方法是将windows和linux分离到单独的目录环境中,但这也有它自己的一套可能出现的问题。这里似乎有一些误解。(1) 通过主/代理设置,傀儡模块仅安装在主设备上。(2) 无论主节点上安装了什么模块,应用于任何给定目标节点的模块由该节点的分类控制,该分类从一个或多个全局声明、匹配节点块和外部节点分类器的输出中收集。换句话说,哪些模块应用于哪些节点完全由您控制。但是,如何在特定情况下实施可用控制取决于您如何首先对节点进行分类的细节。你还没有提出。通常,我们会寻找一个能证明您的问题的答案,以便能够做出有用的答案。