《Puppet实战手册》——2.6 使用内联模板

本节书摘来自异步社区《Puppet实战手册》一书中的第2章,第2.6节,作者:【英】John Arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 使用内联模板

模板是一种使用嵌入式Ruby来帮助用户动态(如通过遍历数组)地建立配置文件的强大的方式。但是,用户仍然可以在清单中直接通过inline_template函数嵌入Ruby代码,而无须创建单独的模板文件。

操作步骤
下面是一个使用inline_template的例子。

在Puppet配置清单中将Ruby代码传递给inline_template函数,如下所示:

cron { 'chkrootkit':
 command => '/usr/sbin/chkrootkit >/var/log/chkrootkit.log 2>&1',
 hour  => inline_template('<%= @hostname.sum % 24 %>'),
 minute => '00',
}

工作原理
任何传递给inline_template函数的字符串的内容都会被当作ERB模板来执行。也就是说,任何在<%=和%>分隔符之间的内容都将作为Ruby代码而执行,而其余的部分将被视为字符串。

在这个例子中,使用inline_template来为每一台机器上的cron(一种调度作业)资源计算不同的执行时刻,以至于同样的作业不会同时在所有的机器上运行。要了解更多关于此技术,可参见5.6节。

更多参考
在ERB代码中,无论是在模板文件的内还是在inline_template的参数字符串中,只要它们是在当前作用域内有效,都可以直接通过前缀@加名称的方式访问Puppet变量。

<%= @name %>
如果它们在其他作用域中,那么可以使用scope.lookupvar来引用它们,如下所示。

<%= "The variable from otherclass is " + scope.lookupvar('otherclass:: variable') %>

应该谨慎地使用内联模板。如果一定要在配置清单中实现一些复杂的逻辑,可以考虑使用自定义函数来代替内联模板(见8.14节)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值