Chef - 模板



在基础设施中,**配置管理** 就是关于如何很好地配置主机。通常,所有配置都是使用配置文件完成的。Chef 使用模板能够使用动态值填充配置文件。

Chef 提供模板作为可在菜谱中使用的资源。配置文件的动态值可以从数据包、属性中检索,甚至可以通过将它们传递到模板中来计算它们。

如何使用它?

**步骤 1** - 将模板添加到菜谱中。

vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb  
template '/tmp/message' do 
   source 'Test.erb' 
   variables( 
      hi: 'Tesing', 
      world: 'Welt', 
      from: node['fqdn'] 
   ) 
end 

**步骤 2** - 添加**ERB** 模板文件。

vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb 
<%- 4.times do %> 
<%= @hi %>, <%= @world %> from <%= @from %>! 
<%- end %>

**步骤 3** - 将修改后的 Cookbook 上传到 Chef 服务器。

vipin@laptop:~/chef-repo $ knife cookbook upload <Cookbook Name> 
Uploading my_cookbook [0.1.0] 
Run Chef Client on your node: 
user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2017-01-14T20:41:21+00:00] INFO: Processing template[/tmp/ 
message] action create (my_cookbook::default line 9) 
[2017-01-14T20:41:22+00:00] INFO: template[/tmp/message] updated 
content

**步骤 4** - 验证上传文件的內容。

user@server:~$ sudo cat /tmp/message 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 

工作流程

Chef 使用 Erubis 作为其模板语言。它允许在模板中的特殊符号内嵌入纯 Ruby 代码。

  • <%= %> 用于将变量或 Ruby 表达式的值打印到生成的 文件中。

  • <%- %> 用于将 Ruby 逻辑嵌入到模板文件中。我们使用它来循环执行我们的表达式四次。

广告

© . All rights reserved.