在我的 Puppet 配置中,我需要先将变量值小写,然后才能在模板中使用。如何实现?有没有办法将 Puppet 清单中的变量值小写?我需要在模板中执行此操作吗?
更笼统地说:我可以在清单中使用字符串操作函数在哪里。
我是否必须编写自己的自定义 ruby 函数来实现这一点?
答案1
Puppet 在清单中的字符串操作能力非常有限。清单实际上并不是用来处理这类内容的。
但在模板中,这很容易;可以使用普通的 ruby 函数。假设我想要以下osfamily
事实的小写形式:
<%= osfamily.downcase %>
答案2
我能想到两种通用解决方案来解决这个问题。所谓通用,是指它们可以在清单文件和模板中工作,而不仅仅是模板。
我推荐的解决方案是使用downcase()
解析器函数标准库模块。我推荐这个,因为你不需要编写任何 ruby 代码,而且它更容易阅读:
class helloworld {
$os_downcase = downcase($osfamily)
}
include helloworld
如果你不想依赖模块stdlib
,那么你可以使用inline_template
函数来概括Shane提到的解决方案:
class helloworld {
$os_downcase = inline_template('<%= osfamily.downcase %>')
}
include helloworld
inline_template
避免了创建单独文件的需要*.erb
。
希望这会有所帮助。-杰夫