Puppet 条件目录编译
我有两台服务器,例如Puppet 条件目录编译,puppet,Puppet,我有两台服务器,例如app01.zone1.mydomain.com和app01.zone2.mydomain.com。我有一个类app,节点分类器将该类分配给主机名匹配app*的每个主机。app类如下所示: class app inherits common { include 'appm' } 它只包括appm模块 现在,appm模块获得了一些代码,这些代码将在zone2中中断。因此,我将app类修改为以下内容 class app inherits common { if ($zo
app01.zone1.mydomain.com
和app01.zone2.mydomain.com
。我有一个类app
,节点分类器将该类分配给主机名匹配app*
的每个主机。app
类如下所示:
class app inherits common {
include 'appm'
}
它只包括appm
模块
现在,appm
模块获得了一些代码,这些代码将在zone2
中中断。因此,我将app
类修改为以下内容
class app inherits common {
if ($zone == 'zone1'){
include 'appm'
}
}
但是,在编译目录时,该条件将被忽略。因此,当app01.zone2.mydomain.com
上的代理尝试同步时,编译失败
有没有办法使目录编纂符合条件?对于这种情况还有其他建议吗?您可以为您的案例使用与正则表达式匹配的条件:
class app inherits common {
if $::fqdn =~ /^app(\d+)\.zone1\./ {
include 'appm'
}
}
您可以为您的案例使用与正则表达式匹配的条件:
class app inherits common {
if $::fqdn =~ /^app(\d+)\.zone1\./ {
include 'appm'
}
}
你的类
应用程序
包括它自己,如果它得到评估的话。那肯定不是你想要的。我怀疑事实上,这个类没有被评估,而是你的另一个类app
被选中并被评估。@JohnBollinger我知道混淆是从哪里来的。让我更正这个问题以添加更多上下文。$zone
在哪里以及如何获得其值?假设$zone是一个全局变量。很抱歉,我忽略了目录构建失败。在这种情况下,您可以使用Puppet的一个内置日志功能,例如,代替Notify
。这将在目录构建时将信息输出到主日志中。如果您的类得到了评估,则您的类应用程序
将包括其自身。那肯定不是你想要的。我怀疑事实上,这个类没有被评估,而是你的另一个类app
被选中并被评估。@JohnBollinger我知道混淆是从哪里来的。让我更正这个问题以添加更多上下文。$zone
在哪里以及如何获得其值?假设$zone是一个全局变量。很抱歉,我忽略了目录构建失败。在这种情况下,您可以使用Puppet的一个内置日志功能,例如,代替Notify
。这将在目录构建时将信息输出到主日志中。在答案中再添加几行解释或输出示例将有助于理解解决方案。我实际上是想暗示zone是另一个类似fqdn的变量,它是全局可用的。你加的条件和我加的条件没有什么不同。这不会阻止目录编译进入这种情况。在答案中添加几行解释或输出示例有助于理解解决方案。我实际上是想暗示zone是另一个类似fqdn的变量,它是全局可用的。你加的条件和我加的条件没有什么不同。它不会阻止目录编译进入这种状态。