Copyright © 2022-2024 aizws.net · 网站版本: v1.1.1·内部版本: v1.22.5·
页面加载耗时 0.00 毫秒·物理内存 71.4MB ·虚拟内存 1298.2MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
模板是用一种特殊的语言编写的,可以从数据中生成文本。模板是收集代码、数据和文字文本以生成最终输出的文档。模板的主要目的是通过简单的输入处理文本的复杂部分。
我们在 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" } }
以下是模板定义:
<Location "/cgi-bin/ <%= name %>.cgi"> SetEnv TEST_ENV "/export/svn/test/<%= name %>" </Location> # use this to authenticate users <Location "/cgi-bin/<%= name %>.cgi/login"> AuthType Basic AuthName "Test" AuthUserFile /etc/tomcat/auth/svn Require valid-user </Location>
这会将每个模板文件推送到一个单独的文件中,然后我们需要告诉 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 %>
Puppet 允许我们创建自定义函数。自定义函数有助于提升和扩展 Puppet 模块和清单文件的容量。我们知道,Puppet 提供了一个内置函数列表,但是如果你想对它的数据做一些修改编译目录时内置函数或与第三方服务 ...