📜  puppet 模板

📅  最后修改于: 2021-01-08 05:03:25             🧑  作者: Mango

puppet 模板

模板以一种特殊的语言编写,该语言可从数据生成文本。模板是收集代码,数据和字面量文本以生成最终输出的文档。模板的主要目的是通过简单的输入来处理文本的复杂部分。

我们正在Puppet中使用模板来处理配置文件的内容。

模板语言

Puppet支持两种模板语言:

  • EPP(嵌入式puppet )在特殊标签中使用puppet 表达式。该语言可用于Puppet 4.0及更高版本。
  • ERB(嵌入式Ruby)在标签中使用Ruby代码,并且您必须具有一些Ruby知识。该语言支持所有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 %>