linux – 在Puppet中更改节点声明中的类变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 在Puppet中更改节点声明中的类变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2153字,纯文字阅读大概需要4分钟。
内容图文
![linux – 在Puppet中更改节点声明中的类变量](/upload/InfoBanner/zyjiaocheng/955/2480c81688e14fe0aebcedad70e10486.jpg)
我正在尝试为我的所有服务器创建一个“模板”.我有2个配置. NTP客户端(在基类类中处理.我想通过在节点声明中声明特定内容来创建特定于NTP服务器的覆盖.类似于“baseclass :: ntp:restrict => true”.或者,我如何从baseclass :: ntp更改已声明的变量之一?
有没有人有任何想法主办这样做?
这是我到目前为止:
templates.pp
class baseclass {
include defaultusers
include sudoers
include issue
class { ntp:
ensure => running,
servers => ['ntpserver1.host.com',
'ntpserver2.host.com',],
autoupdate => false,
}
}
nodes.pp
node default {
include baseclass
}
node "ntpserver1.host.com" inherits default {
<some code here to declare new variable in baseclass::ntp>
<some code here to change existing variable, such as "ensure">
}
解决方法:
您已经参与了参数化类的问题:它们不支持覆盖.它们应该,但是由于在Puppet中初始化事物的顺序的各种问题,你不能覆盖类的参数.一旦你设置它们,你就完成了.这与定义不同,其中重写参数按预期工作.有一个关于这一点的open bug,我们中的一些人已经投票并正在观看,但似乎没有什么进展.
鉴于此,我的建议是将参数化的ntp类重新定义为定义,因为定义将完全按照您的意愿工作.将类更改为:
define ntp($servers, $autoupdate = false, $ensure = 'running') {
# ... put code from class here ...
}
然后将基类更改为:
ntp { $fqdn:
servers => [ 'ntpserver1.host.com',
'ntpserver2.host.com',],
}
您将不得不更改类结构以添加新类,因为您无法从节点中的类继承,因此将节点更改为:
node "ntpserver1.host.com" inherits default {
include hosts::ntpserver1
}
或者您想要命名每个主机配置类.然后,在该课程中,您可以完全按照您的期望完成:
class hosts::ntpserver1 inherits baseclass {
Ntp["$fqdn"] { ensure => 'stopped' }
}
我知道这似乎是一个巨大的变形,特别是如果你习惯在节点内做一堆东西(不参与类继承树).但是无法将参数覆盖到类,似乎没有一个好的替代方案. (我们管理着500个节点和大约100个完全独立的服务定义,主机之间有数百个模块和大量的变化,包括每个主机覆盖,使用这种方法,它运行得非常好.)
TL,DR摘要:您不能覆盖类参数.一旦你将参数传递给Puppet中的一个类,你就完成了.您可以覆盖定义参数.因此,您想要覆盖的任何内容最好写为定义而不是类.但是,请记住,覆盖层次结构意味着您必须将节点定义的核心放在类中,因为只有类可以继承并覆盖另一个类.因此,如果您大量使用覆盖,请养成使节点定义变得微不足道的习惯(仅包括执行所有工作的类),以便您的类可以从基类继承并覆盖要定义的参数.
内容总结
以上是互联网集市为您收集整理的linux – 在Puppet中更改节点声明中的类变量全部内容,希望文章能够帮你解决linux – 在Puppet中更改节点声明中的类变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。