gpt4 book ai didi

windows - Puppet 安装在另一个节点定义中定义的软件

转载 作者:可可西里 更新时间:2023-11-01 11:47:21 27 4
gpt4 key购买 nike

我正在使用 Puppet Enterprise。

# puppet master --version
4.8.1

list 目录 (/etc/puppetlabs/code/environments/production/manifests) 包含以下内容:

iis.pp
rds.pp
site.pp

我在 site.pp 中有一个节点定义,如下所示:

# cat site.pp
node 'box A' {
include iis
}

现在我面临的问题是,如果我创建一个新节点(例如方框 B)并通过创建如下所示的空白定义将其添加到 site.pp,它仍然会安装软件它们实际上是另一个节点(在本例中为“框 A”)定义的一部分。

node 'box B' { }

在上述两个节点定义之外,我在 site.pp 中没有定义任何 include 语句。

为什么会这样?

更新:

# cat iis.pp
$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET']

windowsfeature { $iis_features:
ensure => present,
}

最佳答案

从 Puppet 4 开始,顶级环境 manifests/ 目录中的所有文件将被自动加载。通常这是为了让您可以定义不同的节点定义或类,并在不使用 import 指令(在 Puppet 2 和 3 中使用)的情况下加载它们。

在您的例子中,iis.pprds.ppsite.pp 被解析并在每个节点上使用。 (Directories: The main manifest(s) 有更多关于如何配置的信息。)

要修复它,请使用 Puppet classes将您的 IIS 配置(windowsfeature 资源)分组到一个 iis 类中 - 然后您的 include iis 将仅在“框 A”上使用此配置.

修改iis.pp定义一个类:

class iis {
$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET']

windowsfeature { $iis_features:
ensure => present,
}
}

理想情况下,将 iis.pp 移动到 /etc/puppetlabs/code/environments/production/modules/iis/manifests/init.pp 以成为标准模块地点。这提供了更好的性能,因为在您使用 include iis 之前,Puppet 不需要读取 iis.pp。

关于windows - Puppet 安装在另一个节点定义中定义的软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com