Puppet 模板中的小写变量值

Puppet 模板中的小写变量值

在我的 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

希望这会有所帮助。-杰夫

相关内容