📅  最后修改于: 2021-01-08 05:03:25             🧑  作者: Mango
模板以一种特殊的语言编写,该语言可从数据生成文本。模板是收集代码,数据和字面量文本以生成最终输出的文档。模板的主要目的是通过简单的输入来处理文本的复杂部分。
我们正在Puppet中使用模板来处理配置文件的内容。
Puppet支持两种模板语言:
要评估模板,请使用以下函数:
$value = template ("testtemplate.erb")
我们可以定义模板的完整路径,或将所有模板拖到Puppet的templatedir中。 puppetdir的最常用位置是/ var / puppet / templates。我们可以通过运行Puppet –configprint templatedir找到目录的位置。
客户没有评估模板;解析器对其进行评估。因此,如果使用puppetmasterd,则只需在服务器上安装模板,而无需将其下载到客户端。客户端使用模板并将文件的所有内容定义为字符串,对两者都相同。这表明特定于客户端的变量是由puppetmasterd在puppet启动阶段首先发现的。
让我们看一个为测试站点生成tomcat配置的示例:
define testingsite($cgidir, $tracdir) {
file { "testing-$name":
path => "/etc/tomcat/testing/$name.conf",
owner => superuser,
group => superuser,
mode => 644,
require => File[tomcatconf],
content => template("testsite.erb"),
notify => Service[tomcat]
}
symlink { "testsym-$name":
path => "$cgidir/$name.cgi",
ensure => "/usr/share/test/cgi-bin/test.cgi"
}
}
以下是模板定义:
.cgi">
SetEnv TEST_ENV "/export/svn/test/<%= name %>"
# use this to authenticate users
.cgi/login">
AuthType Basic
AuthName "Test"
AuthUserFile /etc/tomcat/auth/svn
Require valid-user
这会将每个模板文件推送到一个单独的文件中,然后我们需要告诉Apache加载这些配置文件:
include /etc/apache2/trac/[^.#]*
要组合两个模板,请使用以下命令:
template('/path/to/template1','/path/to/template2')
模板还支持Puppet中的数组迭代。
$values = [val1, val2, otherval]
我们有如下模板:
<% values.each do |val| -%>
Some stuff with <%= val %>
<% end -%>
我们将得到以下输出:
Some statement with val1
Some statement with val2
Some statement with otherval
模板还支持条件。我们可以轻松地将条件内容写入文件:
<% if broadcast != "NONE" %> broadcast <%= broadcast %> <% end %>